Можете ли вы игнорировать HTML в строке при выполнении Заменить с помощью jQuery?

Возможный дубликат:
Заменить слова в строке, но игнорировать HTML

Можно ли игнорировать элементы HTML при вызове Replace?

Пример кода:

$myText.replace(new RegExp( $searchString, 'gi' ), 
    '<span class="highlight">'+ $searchString + '</span>');

$myText - это большая строка HTML, например:

var $myText = 
    "<p>Lorem Ipsum is simply dummy text of the printing and typesetting " +
    "industry. Lorem Ipsum has been the industry standard dummy text " +
    "ever since the 1500s, <img src="something">when an unknown printer " +
    "took a galley of type and scrambled it to make a type specimen book. " +
    "It has survived not only five centuries, " +
    "<a href="#" title="Lorem">but</a> also the leap into electronic " +
    "typesetting, remaining essentially unchanged. It was popularised in " +
    "the 1960s with the release of Letraset sheets containing Lorem Ipsum " +
    "passages, and more recently with desktop publishing software like " +
    "Aldus PageMaker including versions of Lorem Ipsum.</p>"

$searchString равен тому, что пользователь вводит в текстовое поле ввода.

Если да, как бы я это сделал, учитывая приведенный выше пример кода?

Ответ 1

Да, посмотрите следующий пост форума:

http://forums.asp.net/t/1443955.aspx

Образец RegEx, который вы ищете, будет похож на следующее:

"(?<!<[^>]*)Jon Doe(?<![^>]*<)"

В принципе, вы выполняете поиск и замену на все, что живет вне скобок < > .

JavaScript:

phrase = phrase.replace(/"(?<!<[^>]*)Jon Doe(?<![^>]*<)" /i, "is not");

Ответ 2

Анализ HTML с регулярным выражением? Это не очень хорошая идея. Я бы предложил вставить HTML-код в DOM и затем пересечь узлы.