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

标签 javascript regex variables replace

我正在尝试创建一个 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 的打印输出是“/Remember/g”(不带引号)——但它是不替换页面上的“记住”一词。 '如果我将 new RegExp() 中的 highlights[i] 替换为简单的字符串“Remember”,它就会正常工作。关于哪里出了问题有什么想法吗?

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

最佳答案

您的多行 server.responseText 存在一些问题。 我用空格而不是换行符替换了输入,并且所有替换都工作正常:

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

关于JavaScript 字符串replace()在替换变量时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12346483/

相关文章:

javascript - 表单元素迭代,在 Javascript 中

没有堆栈溢出的 Java 正则表达式解析器

c# - "timespan?"在 C# 中是什么意思?

循环中的 C 变量变化

javascript - 如何使用 AngularJS 访问 HTML 输入 FileUpload FileList 对象?

javascript - 是否有可能以某种方式缩短 switch 语句?也许有一个循环?

javascript - Canvas 跟随鼠标光标画线

php - 转义字符串以在 preg_ 正则表达式中使用

c# - 需要从c#中的字符串中提取列名

c++ - 引用变量调用析构函数