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

时间:2014-01-08 08:52:40

标签: javascript regex

我想在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

来逃避特殊字符

2 个答案:

答案 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);