Можете ли вы игнорировать 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 и затем пересечь узлы.