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

how to replace multiple words using javascript replace() function?

本文关键字:替换 单词 函数 何使用 javascript replace      更新时间:2023-09-26

下面是我的代码:

        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]);
            }

但是这里如果我放一个字符串"a b";它分为两个字母"a"answers"b"这个替换函数替换了a但是当它得到b的时候它会覆盖并且只替换b。但我想突出a和b。如何解决这个问题?我还有一个问题。如果我替换/突出显示它,那么它会替换HTML标签的所有"a"answers"b"。那么,如何防止替换那些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>';
}  

示例- http://jsfiddle.net/zEXrq/1/

它所做的是将所有键合并成一个由|分隔的单个regex,该regex将匹配所有单词,然后在匹配上运行替换函数。

例子2 - http://jsfiddle.net/zEXrq/2/

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

编辑:很明显,在循环过程中oldvar没有改变,总是只应用最后一个replace。你必须改变"oldvar"来替换所有的

应该在同一个变量上执行操作,将oldvar移出循环,但从不将更改的内容放入oldvar。因此,最后一次迭代(仅)是替换内容的迭代。

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