替换javascript中包含特殊字符的字符串的所有匹配项

替换javascript中包含特殊字符的字符串的所有匹配项,javascript,regex,Javascript,Regex,我想替换javascript中出现的所有字符串 在我的搜索文本中,我有特殊的字符,我无法逃脱它们 我需要用给定的字符串替换${wid}文本 我有这个功能: function replaceAll(find, replace, str) { return str.replace(new RegExp(find, 'g'), replace); } 这应该能完成任务 var inner_code = replaceAll('/\$\{wid\}/', 'id_' +

我想替换javascript中出现的所有字符串

在我的
搜索
文本中,我有特殊的字符,我无法逃脱它们

我需要用给定的字符串替换
${wid}
文本

我有这个功能:

    function replaceAll(find, replace, str) {
        return str.replace(new RegExp(find, 'g'), replace);
    }
这应该能完成任务

var inner_code = replaceAll('/\$\{wid\}/', 'id_' + widget.model_attributes.id, widget.code);
widget.model\u attributes.id
是一个正整数

widget.code
是:

<div id="code_50"><div id="${wid}"></div>
<script type="text/javascript">
    $("#${wid}").text("hello world");
</script></div>

$(“#${wid}”).text(“你好,世界”);

p、 s:这不是一个重复的问题;我不知道如何使用JS逃逸特殊字符。您没有正确创建regexp。使用文字表达式:

function replaceAll(find, replace, str) {
    return str.replace(new RegExp(find), replace);
}
var inner_code = replaceAll(/\${wid}/g, 'id_' + widget.model_attributes.id, widget.code);

您需要避开反斜杠本身。尝试:

replaceAll('\\$\\{wid\\}', 'id_' + ...)
您正在编写JavaScript字符串文本。您希望字符串内容为“\$\{wid\}”,因为这是您想要的RegExp源代码。由于反斜杠在字符串文字中表示某些内容,因此需要对其进行转义(通过在其前面放置另一个反斜杠)

我建议不要使用replaceAll函数,只写以下内容:

var inner_code = widget.code.replace(/\$\{wid\}/g, 'id_' + widget.model_attributes.id);

这使您可以将RegExp保留为RegExp文本,这比使用字符串文本和RegExp构造函数更容易阅读。

它的可能副本不是副本!这是一个问题,我不明白正则表达式构造函数需要一个字符串,所以您必须对所有特殊字符进行双重转义,只需使用正则表达式文本。