我试图创建一个查找和替换程序。问题是全局匹配修饰符内的所有内容都转换为字符串。如何防止这种情况,以便我可以将变量用作全局匹配修饰符的值?
代码:
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;
}
答案 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非常重要。