如何使用javascript replace()函数替换多个单词?

如何使用javascript replace()函数替换多个单词?,javascript,Javascript,这是我的密码: var keys = keyword.split(' '); //alert(keys); for(var i=0; i<keys.length; i++) { var re = new RegExp(keys[i], "gi"); var NewString = oldvar.replace(re, '<span style="background

这是我的密码:

        var keys = keyword.split(' ');
        //alert(keys);
        for(var i=0; i<keys.length; i++)
            {
            var re = new RegExp(keys[i], "gi");
            var NewString = oldvar.replace(re, '<span style="background-color:#FFFF00">'+keys[i]+'</span>');
            document.getElementById("wordlist").innerHTML=NewString;
            alert(keys[i]);
            }
var keys=keyword.split(“”);
//警惕(钥匙);
对于(var i=0;i
var key=keyword.split(“”);
//警惕(钥匙);

对于(var i=0;i您应该在同一个var上执行操作。您将oldvar带到循环之外,但决不将更改的内容带到oldvar中。因此,最后一次迭代(仅)是替换内容的迭代。

您实际上可以执行如下单个正则表达式替换:

var re = new RegExp(keys.join("|"), "gi");
oldvar = oldvar.replace(re, replacer);        
document.getElementById("wordlist").innerHTML = oldvar;

function replacer(str)  
{  
    return '<span style="background-color:#FFFF00">' + str + '</span>';
}  
var re=new RegExp(key.join(“|”),“gi”);
oldvar=oldvar.replace(re,replacer);
document.getElementById(“wordlist”).innerHTML=oldvar;
函数替换器(str)
{  
返回“+str+”;
}  
示例-

它所做的是将所有键合并到一个由
|
分隔的正则表达式中,该正则表达式将匹配所有单词,然后在匹配项上运行replacer函数


示例2-

您正在对变量
oldvar
调用
replace
(此代码段中未声明该变量)在每次迭代中,因此每次都从同一点开始,即非突出显示的字符串。在没有看到所有代码的情况下,我想简单地用
oldvar=
替换
var NewString=
替换
.innerHTML=NewString
。innerHTML=oldvar
将解决您的问题。

如果按此键麦克:那么这段代码不起作用了。它仍然替换HTML标记。我想防止替换HTML标记。请帮助解决this@Moumita我不知道你是什么意思,我添加了另一个示例,允许将不同的值传递给函数,这是否满足你的需要?我做了这个:我的字符串有一些html内容。我想用这些html内容显示它。但我也只想将文本替换到这些html标记中。我应该怎么做?我想我需要使用正则表达式检查所有“
  • ”和“
    • ”,但如何检查呢?检查这是我的问题:我不想突出显示任何html标记,
      var re = new RegExp(keys.join("|"), "gi");
      oldvar = oldvar.replace(re, replacer);        
      document.getElementById("wordlist").innerHTML = oldvar;
      
      function replacer(str)  
      {  
          return '<span style="background-color:#FFFF00">' + str + '</span>';
      }