替换变量时,JavaScript字符串replace()不起作用

JavaScript string replace() not working when replacing variable

本文关键字:replace 不起作用 字符串 JavaScript 变量 替换      更新时间:2023-09-26

我正在尝试创建一个JavaScript脚本来突出显示页面上的某些文本。现在,我在尝试用其他文本替换文本(来自正文html)时遇到了问题。我想用一些其他文本替换数组highlights中每个项的所有实例。

我使用的代码是:

    var responseText = server.responseText;
    var highlights = responseText.split("'n");
    var text = document.body.innerHTML;
    for (i in highlights) {
        if (highlights[i].length > 1) {
            var exp = new RegExp(highlights[i], "g");
            console.log(exp);
            console.log(highlights[i]);
            text = text.replace(exp, "XXXXXXXXXXX");
        }
    }
    document.body.innerHTML = text;

目前,我正在获得highlights[i]的正确值打印输出,我认为我是正则表达式exp的正确值;如果highlights[i]是"Remember",那么我为exp得到的打印输出是"/ReRemember/g"(不带引号)——但它不会替换页面上的单词"Remembe"如果我用字符串"记住"替换new RegExp()中的highlights[i],它就可以正常工作。有什么问题吗?

编辑:我解决了问题!在创建RegExp()时,我传入了highlights[i].trim(),而不仅仅是highlights[i],以消除开头/结尾的空白,现在它似乎正在工作。

多行server.responseText有一些问题。我用空格而不是换行替换了输入,所有的替换都很好:

http://jsfiddle.net/XTdgJ/1/