Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一组关键字中突出显示段落中出现的所有特定单词_Javascript_Highlight - Fatal编程技术网

Javascript 从一组关键字中突出显示段落中出现的所有特定单词

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

我有一个很长的段落,需要突出显示数组中包含的关键字。我能够在数组中循环并突出显示段落中每个单词的第一次出现。但是,我无法突出显示后续事件

这与提出的问题非常接近。 在下面的示例中,我试图查找并突出显示所有出现的“dog”和“field”。 由于有
“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>';
  });