替换javascript中包含特殊字符的字符串的所有匹配项
我想替换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_' +
搜索
文本中,我有特殊的字符,我无法逃脱它们
我需要用给定的字符串替换${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构造函数更容易阅读。它的可能副本不是副本!这是一个问题,我不明白正则表达式构造函数需要一个字符串,所以您必须对所有特殊字符进行双重转义,只需使用正则表达式文本。