我希望匹配确切的单词,但正则表达式匹配
之类的单词 keywords = "US",live","xxxx"...
var pattern = new RegExp("(\\b"+this+"\\b)(?![^<]*?>)", ["gi"]);
使用\s
选项为匹配的字符串添加空格
我实际上是匹配字符串并将其转换为标记,方法是将#
添加到每个匹配的单词中,但上面的模式匹配上面提到的单词
$(keywords).each(function() {
var pattern = new RegExp("(\\b"+this+"\\b)(?![^<]*?>)", ["gi"]); //looks for match outside html tags
//var pattern = new RegExp("(\\b"+this+"\\s)(?![^<]*?>)", ["gi"]); //looks for match outside html tags
var rs = "<a class='keyword' href='#'><span class='tag-keyword'>$1</span></a>";
el.html(el.html().replace(pattern, rs));
});
$(".tag-keyword").prepend("#");
答案 0 :(得分:3)
您可以在前导的帮助下强制使用连字符,以检查是否存在必填空格或字符串结尾:
(?=\s|$)
像
\blive\b(?=\s|$)(?![^<]*?>)
这是demo。
请记住,在JavaScript中,当您使用RegExp构造函数表示法时,you must use double slash:
使用构造函数时,正常的字符串转义规则 (当包含在字符串中时带有\的特殊字符前面) 必要的。
var pattern = new RegExp("(\\b"+this+"\\b)(?=\\s|$)(?![^<]*?>)", ["gi"]);