我想在javascript中替换所有出现的字符串;
在我的search
文本中,我有特殊的字符,我无法逃避它们;
我需要用给定的字符串替换${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_attributes.id
是一个正整数
widget.code
是:
<div id="code_50"><div id="${wid}"></div>
<script type="text/javascript">
$("#${wid}").text("hello world");
</script></div>
p.s:这不是一个重复的问题;我不知道如何使用JS
来逃避特殊字符答案 0 :(得分:2)
你需要逃避反斜杠本身。尝试:
replaceAll('\\$\\{wid\\}', 'id_' + ...)
您正在编写JavaScript字符串文字。您希望字符串 content 为“\ $ \ {wid \}”,因为这是您想要的RegExp源代码。由于反斜杠意味着字符串文字中的某些内容,因此您需要将其转义(通过在其前面添加另一个反斜杠)。
我建议不要使用replaceAll函数,只需编写:
var inner_code = widget.code.replace(/\$\{wid\}/g, 'id_' + widget.model_attributes.id);
这允许您将RegExp保持为RegExp文字,这比通过字符串文字和RegExp构造函数更容易阅读。
答案 1 :(得分:1)
您没有正确创建正则表达式。使用文字表达式:
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);