resalte las palabras en html usando regex y javascript - casi allí

Estoy escribiendo un complemento de jquery que hará una búsqueda de búsqueda en la página al estilo del navegador. Necesito mejorar la búsqueda, pero todavía no quiero analizar el html.

En este momento, mi enfoque es tomar un elemento DOM completo y todos los elementos anidados y simplemente ejecutar una expresión regular de buscar / reemplazar para un término determinado. En el reemplazo, simplemente envolveré un espacio alrededor del término coincidente y lo usaré como mi ancla para hacer resaltado, desplazamiento, etc.Es vital que no coincida ningún carácter dentro de ninguna etiqueta html.

Esto es lo más cerca que he conseguido:

<code>(?<=^|>)([^><].*?)(?=<|$)
</code>

Hace un muy buen trabajo capturando a todos los personajes que estánno en una etiqueta html, pero tengo problemas para averiguar cómo insertar mi término de búsqueda.

<code>Input: Any html element (this could be quite large, eg <body>)    
Search Term: 1 or more characters    
Replace Txt: <span class='highlight'>$1</span>
</code>

ACTUALIZAR

El siguiente regex hace lo que quiero cuando estoy probandohttp://gskinner.com/RegExr/...

<code>Regex: (?<=^|>)(.*?)(SEARCH_STRING)(?=.*?<|$)
Replacement: $1<span class='highlight'>$2</span>
</code>

Sin embargo, estoy teniendo algunos problemas para usarlo en mi javascript. Con el siguiente código, Chrome me está dando el error "Expresión regular no válida: / (? <= ^ |>) (.?) (María) (? =.? <| $) /: Grupo no válido ".

<code>var origText = $('#'+opt.targetElements).data('origText');
var regx = new RegExp("(?<=^|>)(.*?)(" + $this.val() + ")(?=.*?<|$)", 'gi');
$('#'+opt.targetElements).each(function() {
   var text = origText.replace(regx, '$1<span class="' + opt.resultClass + '">$2</span>');
   $(this).html(text);
});
</code>

Se está rompiendo en el grupo (? <= ^ |>): ¿Es esto algo torpe o una diferencia en los motores Regex?

ACTUALIZAR

La razón por la que esta expresión regular se está rompiendo en ese grupo es porque Javascript no es compatible con la apariencia de expresión regular. Para referencia y posibles soluciones:http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript.

Respuestas a la pregunta(1)

Su respuesta a la pregunta