正则表达式匹配确切的单词并将匹配转换为标签

时间:2015-04-14 06:35:53

标签: jquery html regex

我希望匹配确切的单词,但正则表达式匹配

之类的单词
  • 直播
  • 以美国为首的美国

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("#");

1 个答案:

答案 0 :(得分:3)

您可以在前导的帮助下强制使用连字符,以检查是否存在必填空格或字符串结尾:

(?=\s|$)

\blive\b(?=\s|$)(?![^<]*?>)

这是demo

请记住,在JavaScript中,当您使用RegExp构造函数表示法时,you must use double slash

  

使用构造函数时,正常的字符串转义规则   (当包含在字符串中时带有\的特殊字符前面)   必要的。

 var pattern = new RegExp("(\\b"+this+"\\b)(?=\\s|$)(?![^<]*?>)", ["gi"]);