如果使用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