如果使用RegExp
构造函数,你需要翻倍的逃逸,因为有逃逸的2层:摆脱在JavaScript字符串字面量和正则表达式语法逃逸
然而,在你的情况下,也可以写一个正则表达式,而不逃避所有
在你的情况,你可以。使用文字RegExp
,在你只需要关心转义正则表达式语法,并出现在正则表达式的任何/
逃逸(因为/
作为分隔符文字RegExp
:
/^[a-z 0-9"\-`]+$/gi
另一种方法是:
/^[a-z 0-9"`-]+$/gi
如果它是字符类中的最后一个,则不需要跳过破折号-
。这样,你不需要把所有的逃跑都弄糊涂了。
或者,如果你仍然想使用RegExp
构造函数,你需要加倍逃避字符串中指定\
:
new RegExp('^[a-z 0-9"\\-`]+$', "ig")
或者只是使用其中最后一个指定的字符类-
其他版本:
new RegExp('^[a-z 0-9"`-]+$', "ig")
注意,我改变字符串引自"
到'
,以避免在字符串中逃脱"
。如果由于某种原因喜欢"
,逃避"
在文字串级:
new RegExp("^[a-z 0-9\"`-]+$", "ig")
至于当前的正则表达式
new RegExp("^[a-z 0-9\"\-\`]+$", "ig")
相当于
/^[a-z 0-9"-`]+$/gi
作为你可以看到一个的字符范围包含到`
包含,这意味着包含所有带有从0x22到0x60的ASCII码的字符,并且#
恰好在该范围内。
要检查模式是否是你想要的,你总是可以调用source
属性的正则表达式来获得正则表达式的源字符串。
我不能相信我失败的那个...:-0 – 2013-03-19 10:20:59
但看看这里http://i.stack.imgur.com/guafm.jpg它fu **一切(在视觉工作室) – 2013-03-19 10:25:45
所以实际上\“将会是\\”...... grrrrrr – 2013-03-19 10:34:04