我正在尝试使用 JavaScript 和正则表达式突出显示一组关键字,我面临一个问题,我的关键字可能包含文字和特殊字符,如 @text #number 等。我正在使用单词边界来匹配和替换整个单词而不是部分词(包含在另一个词中)。
var pattern = new regex('\b '( + keyword +')\b',gi);
在这里,此表达式匹配整个关键字并突出显示它们,但是如果有任何关键字(如“数字:”)没有突出显示。
我知道\bword\b
单词边界和特殊字符的匹配项是非字母数字字符,因此与上述表达式不匹配。你能告诉我我可以使用什么正则表达式来完成上述操作。
==更新==
对于上述内容,我尝试了 Tim Pietzcker 对以下正则表达式的建议,
expr: (?:^|\\b|\\s)(" + keyword + ")(?:$|\\b|\\s)
以上似乎可以让我使用字母数字和非字母数字字符匹配整个单词,但是只要关键字在关键字之前或之后有连续的 html 标记而没有空格,它就不会突出显示该关键字(例如社会保障* number: <br> *) 我尝试了以下正则表达式,但它替换了关键字前面的 html 标记
expr: (?:^|\b|\s|<[^>]+>)number:(?:$|\b|\s|<[^>]+>)
这里是关键字编号:它< br >
(为 br 标签故意添加空格以避免浏览器解释标签)接下来没有空格,用关键字突出显示。
你能建议一个表达式,它会忽略整个单词的连续 html 标记,同时包含字母数字和非字母数字字符。