逃避字符串中的正则表达式

时间:2011-06-21 17:29:52

标签: javascript regex

我有一大块HTML / CSS / JS,可以通过脚本标签提供给第三方网站。脚本标记有一个id,我用它来匹配并在正确的位置插入内容(没有讨厌的document.write)。但是,我遇到了一个非常奇怪的错误。任何带有正则表达式的行似乎从字符串中逃脱。下面是一个问题行的例子(导致问题的一些问题):

+"        // preceding code"
+"        var remSpc = new RegExp('[\$%,]', 'ig');"
+"        // following code"

前面和后面的行被正确转义,中间线的语法对我来说看起来是正确的,但是它引发了“意外的输入结束”错误,WebKit Inspector将其显示为未转义。屏幕下方显示未转义的含义:

enter image description here

正则表达式的目的是从$ amount和百分比中删除特殊字符(示例值可能是“$ 1,000”或“5.5%”。我尝试不使用RegExp对象而只是执行`/ [\ $ %,] / ig和我得到完全相同的问题。

N.B问题不在于这个正则表达式,我有一些正则表达式,每一行包含一个正如同一样。

1 个答案:

答案 0 :(得分:4)

字符串中的字符串应该被双重转义:

//...
+"        var remSpc = new RegExp('[\\\\$%,]', 'ig');"

第一个\是逃避第二个\

编辑:根据Felix的评论将其更改为\\\\。我们需要这个,因为通常它会是:

/...\$.../

但是,正则表达式是一个字符串,所以:

'...\\$...'

然后,该字符串位于另一个字符串中,用于评估:

"...'...\\\\$....'..."