用于在html文本中捕获单词的javascript正则表达式

用于在html文本中捕获单词的javascript正则表达式,javascript,regex,Javascript,Regex,我在解释我的问题。 我正在尝试使用javascript函数突出显示html文本中的单词(更改其颜色)。我有另一个功能来取消突出显示它们 我有一个关键字列表,我必须强调 这是我到目前为止写的代码 function highlight_words(keywords) { unHighlight_words(keywords); $('.rubricContent').each(function(index, element) { //get elements for each rubric

我在解释我的问题。 我正在尝试使用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);
    }
});
函数突出显示\u单词(关键字){
不突出的单词(关键词);
$('.rubricContent')。每个(函数(索引,元素){
//获取每个评估准则的元素
var content=$(element.html();
如果(关键字){
$(关键字).每个(功能)(即,e){
var项=e
var re=new RegExp(“(?:[^.\w]| | | ^\\w+{0}(“+term+”)(?:[^.\w]| \\w(?=\\w+|$)|$){0},“gmi”);
var subst=''+术语+'';
内容=内容。替换(re,subst);
});
$(元素).html(内容);
}
});
结果并不是那么糟糕,我的单词是红色的,但后面跟着“.”或“,”时就不是了

有人能帮我解决吗?
谢谢!!

您可以使用\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)
term='Test';
content='TestTest.Test:Test.Test,testtesttest'
var re=new RegExp(“(\\b'+term+'\\b)”,“gmi”);
var subst=''+术语+'';
内容=内容。替换(re,subst);
警报(内容)