jQuery для поиска / замены текста HTML, когда не внутри тега HTML, кроме P, DIV, SPAN, TD - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть HTML-фрагмент текста, который является частью DOM страницы, для которого мне нужно выполнить поиск / замену, и мне нужна помощь в поиске лучшего способа создания функции поиска / замены.

Например, я хотел бы взять содержимое объекта dom, чей id = "content", и запустить поиск вместо, используя целевую поисковую фразу.

Мне нужна функция для замены каждого экземпляра фразы, которую он находит в контенте, на « Фраза », при условии, что фраза не появляется внутри какого-либо тега, кроме div,тег p, span или td и возвращает замененный текст xhtml.

Можно ли сделать это с помощью обхода jQuery dom вместе с некоторым методом замены?

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

Это то, что я использовал для поиска строки поиска. RegEx проверяет текст, который не принадлежит тегу HTML. В функции замены $& ссылается на найденную строку.

var rx = new RegExp('(?![^<]+>)' + searchString, 'gi');

$(this).html(function (i, html) {
   return html.replace(rx, '<b>$&</b>')
});

Что касается принадлежности к другим тегам HTML, вам нужно будет привести пример. Вот где это может быть сложно.

0 голосов
/ 03 октября 2016

Если вы хотите избежать &nbsp;, вы можете использовать это регулярное выражение (?![^<&]+[>;]) Используя комментарий Джона Стриклера:

var rx = new RegExp('(?![^<&]+[>;])' + searchString, 'gi');

$(this).html(function (i, html) {
   return html.replace(rx, '<b>$&</b>')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...