У меня есть результаты поиска, возвращенные с сервера, и регулярное выражение, которое выделяет результат, используя слова в поисковом запросе.JavaScript RegEx Ignore String
words = searchQuery.split(' ');
$.each(words, function() {
var word = this.trim();
var regex = new RegExp('(' + word + ')(?!>|b>)', 'gi');
searchResult = searchResult.replace(regex, "<b>$1</b>");
});
Это прекрасно работает, пока я не искать что-то вроде этого:
поиска: "сценарий с JavaScript"
Результат поиска: "Java скрипт является язык программирования ..."
Он должен выделить все слово как «javascript - это язык программирования ...». Однако, поскольку строка изменилась с «javascript» на «java <b>
script </b>
», она больше не совпадает со вторым словом в поисковом запросе. Он также создает странные значения, когда значение word
равно «b», «/», «<» или «>».
Мой вопрос в том, как я могу игнорировать теги <b>
и </b>
в регулярном выражении и соответствовать только исходному поисковому запросу? Я попытался использовать lookahead, но это не сработало.
Просто сортировать поисковые запросы по длине строки, прежде чем подсветка. – zerkms