2015-06-07 50 views
-1

我正在解释我的问题。 我试图做一个JavaScript函数来突出显示单词(改变它们的颜色)在HTML文本中。我有另一个功能来突出显示它们。javascript正则表达式来捕获HTML文本中的单词

我有一个关键字列表,我必须强调。

这里是我所著的代码到目前为止

function highlight_words(keywords) { 

unHighlight_words(keywords); 
$('.rubricContent').each(function(index, element) { 
    //get elements for each rubrics 
    var content = $(element).html(); 
    if (keywords) { 
     $(keywords).each(function(i, e) { 
      var term = e 
      var re = new RegExp('(?:[^.;\w]|^|^\\W+){0}('+ term + ')(?:[^.\w]|\\W(?=\\W+|$)|$){0}', "gmi"); 
      var subst = '<span style="color:red">' + term + '</span> '; 
      content = content.replace(re, subst); 

     }); 
     $(element).html(content); 
    } 
}); 

结果并不坏我的话是红色的,但不是当他们后跟一个“”或一个“,”

任何人都有我的解决方案? 谢谢!

回答

0

您可以按如下所示使用\ b字边界。

term='Test'; 
content='TestTest. Test Test: Test. Test, TESTtest' 
var re = new RegExp('(\\b'+term+'\\b)', "gmi"); 
var subst = '<span style="color:red">' + term + '</span> '; 

content = content.replace(re, subst); 

alert(content) 

https://jsfiddle.net/3royvd66/1/