变量和正则表达式

时间:2015-11-16 15:33:09

标签: javascript

我试图创建一个查找和替换程序。问题是全局匹配修饰符内的所有内容都转换为字符串。如何防止这种情况,以便我可以将变量用作全局匹配修饰符的值?

代码:

function replaceHim() {

    var para = document.getElementById("para");
    var replaced = document.getElementById("firstInput").value;
    var replaceWith = document.getElementById("secondInput").value;
    var paraValue = para.innerHTML.replace(/replaced/g,replaceWith);
    para.innerHTML = paraValue;
}

1 个答案:

答案 0 :(得分:3)

在这种情况下,您需要使用RegExp构造函数来创建动态正则表达式对象:

function replaceHim() {
    var para = document.getElementById("para");
    var replaced = document.getElementById("firstInput").value;
    var replaceWith = document.getElementById("secondInput").value;
    var regexp = new RegExp(replaced, 'g');
    var paraValue = para.innerHTML.replace(regexp, replaceWith);
    para.innerHTML = paraValue;
}

注意,在这种情况下,传递给RegExp构造函数的值是properly escaped非常重要。