Я пытаюсь выделить набор ключевых слов с помощью JavaScript и регулярных выражений, я столкнулся с одной проблемой, мое ключевое слово может содержать буквенные и специальные символы, как в @text #number и т. Д. Я использую границу слова для сопоставления и замены всего словаа не частичное слово (содержащееся в другом слове).
var pattern = new regex('\b '( + keyword +')\b',gi);
Здесь это выражение соответствует целым ключевым словам и выделяет их, однако в случае, если какое-либо ключевое слово, например "число:", не выделяется.
Мне известно, что \bword\b
соответствует границе слова, а специальные символы не являются буквенно-цифровыми символами, следовательно, не соответствуют вышеприведенному выражению.Можете ли вы дать мне знать, какое выражение регулярного выражения я могу использовать для достижения вышеизложенного.
== Обновление ==
Для вышеизложенного я попробовал предложение Тима Пицкера для приведенного нижеregex,
expr: (?:^|\\b|\\s)(" + keyword + ")(?:$|\\b|\\s)
Вышеприведенное, кажется, работает для того, чтобы получить совпадение для всего слова с буквенно-цифровыми и не буквенно-цифровыми символами, однако всякий раз, когда ключевое слово имеет последовательный тег html до или после ключевого слова без пробела,это ключевое слово не выделяется (например, номер социального страхования * номер:
*). Я использовал следующее регулярное выражение, но оно заменяет тег html, предшествующий ключевому слову
* 1021.*
Здесь для ключевого слова число: с < br >
(преднамеренно добавлено пространство для тега br, чтобы избежать интерпретации тега браузером), следующее за ним без пробела между ними, выделяется ключевым словом.
Можете ли вы предложить выражение, которое будет игнорировать последовательный тег html для всего слова с буквенно-цифровыми и не буквенно-цифровыми символами.