Ajustar carácter en cadena, excluyendo una etiqueta de enlace con Javascript Regex

EDITAR

Heres lo que tengo que hacer ...

Imagínese si tengo un texto con algunas etiquetas html (aún es una cadena):

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>';

Y quiero envolver todas las letras "a" con

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

pero no debo reemplazar nada de la etiqueta, ni lo que está dentro de ella, ni la clase en el

elemento.

Entonces, si quiero envolver todas las letras "a" de esa cadena, se devolvería así:

<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 las letras "a" donde se envuelven con

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

, pero el enlace y el párrafo no lo eran.

también esta cadena proviene de una API, por lo que su dinámica ... esta letra que busco es dinámica, por lo que puede ser "a" o "abc" ... no debe ser sensible a mayúsculas y minúsculas

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta