Javascript 从一组关键字中突出显示段落中出现的所有特定单词
我有一个很长的段落,需要突出显示数组中包含的关键字。我能够在数组中循环并突出显示段落中每个单词的第一次出现。但是,我无法突出显示后续事件 这与提出的问题非常接近。 在下面的示例中,我试图查找并突出显示所有出现的“dog”和“field”。 由于有Javascript 从一组关键字中突出显示段落中出现的所有特定单词,javascript,highlight,Javascript,Highlight,我有一个很长的段落,需要突出显示数组中包含的关键字。我能够在数组中循环并突出显示段落中每个单词的第一次出现。但是,我无法突出显示后续事件 这与提出的问题非常接近。 在下面的示例中,我试图查找并突出显示所有出现的“dog”和“field”。 由于有“g”标志,这可用于查找每个单词的所有匹配项 var re = new RegExp(arr.join("|"), "g") console.log('keywords are ' + re); console.log('The matches are
“g”
标志,这可用于查找每个单词的所有匹配项
var re = new RegExp(arr.join("|"), "g")
console.log('keywords are ' + re);
console.log('The matches are ' + str.match(re));
但是我不确定在replace
中是否以及在何处应该有“g”
标志
我尝试过使用
str.replace(/match/g,function(match,I)
。这不会出错,但会删除所有突出显示。可能您不需要match(re)。对于每个,只需单独使用replace(re)
var arr=(“狗跑过田野,狗吃了。”);//要搜索的段落
document.getElementById(“x”).innerHTML=arr;
var words=[“dog”,“field”];//关键字数组
var str=document.getElementById(“x”).innerHTML;
var re=new RegExp(words.join(“|”)gi”);//创建一个a | b | c正则表达式
str=str.replace(re,函数replace(match){//wrap找到的字符串
返回“”+匹配+“”;
});
document.getElementById(“x”).innerHTML=str
要获得预期的结果,请使用下面的选项,即使用RegExp构造函数进行全局匹配,并使用该构造函数替换变量
var glob = new RegExp(match, "g");
str = str.replace(glob, function replace(match) { // wrap the found strings
return '<em>' + match + '</em>';
});
var glob = new RegExp(match, "g");
str = str.replace(glob, function replace(match) { // wrap the found strings
return '<em>' + match + '</em>';
});