我有一大块HTML / CSS / JS,可以通过脚本标签提供给第三方网站。脚本标记有一个id,我用它来匹配并在正确的位置插入内容(没有讨厌的document.write
)。但是,我遇到了一个非常奇怪的错误。任何带有正则表达式的行似乎从字符串中逃脱。下面是一个问题行的例子(导致问题的一些问题):
+" // preceding code"
+" var remSpc = new RegExp('[\$%,]', 'ig');"
+" // following code"
前面和后面的行被正确转义,中间线的语法对我来说看起来是正确的,但是它引发了“意外的输入结束”错误,WebKit Inspector将其显示为未转义。屏幕下方显示未转义的含义:
正则表达式的目的是从$ amount和百分比中删除特殊字符(示例值可能是“$ 1,000”或“5.5%”。我尝试不使用RegExp对象而只是执行`/ [\ $ %,] / ig和我得到完全相同的问题。
N.B问题不在于这个正则表达式,我有一些正则表达式,每一行包含一个正如同一样。
答案 0 :(得分:4)
字符串中的字符串应该被双重转义:
//...
+" var remSpc = new RegExp('[\\\\$%,]', 'ig');"
第一个\
是逃避第二个\
。
编辑:根据Felix的评论将其更改为\\\\
。我们需要这个,因为通常它会是:
/...\$.../
但是,正则表达式是一个字符串,所以:
'...\\$...'
然后,该字符串位于另一个字符串中,用于评估:
"...'...\\\\$....'..."