Enrole o caractere em string, excluindo uma tag de link com o JavaScript Regex

EDITAR

aqui está o que eu tenho que fazer ...

Imagine se eu tiver um texto com algumas tags html dentro dele (ainda é uma string):

var string = '<p>Hello, my name is Mauricio</p><p>Hi, my name is Patricia</p><p class="warn">Yeah, My name is Carl</p><a href="#"><img src="#" /></a>';

E eu quero envolver todas as letras "a" com

 <span class="ui-match"></span>

mas eu não devo substituir nada da tag, nem o que está dentro dela, nem a classe no

elemento.

Então, se eu quiser envolver todas as letras "a" dessa string, ele retornará assim:

<p>Hello, my n<span class="ui-match">a</span>me is M<span class="ui-match">a</span>uricio</p><p>Hi, my n<span class="ui-match">a</span>me is P<span class="ui-match">a</span>trici<span class="ui-match">a</span></p><p class="warn">Ye<span class="ui-match">a</span>h, My n<span class="ui-match">a</span>me is C<span class="ui-match">a</span>rl</p><a href="#"><img src="#" /></a>

todas as letras "a" onde foram envolvidas

 <span class="ui-match"></span>

, mas o link e o parágrafo não foram.

também esta string está vindo de uma API, então sua dinâmica ... esta carta que eu estou procurando é dinâmica, então ela pode ser "a" ou "abc" ... ela não deve ser sensível a maiúsculas e minúsculas

obrigado

questionAnswers(3)

yourAnswerToTheQuestion