2016-02-07 51 views
0

如果在JavaScript和RegExp對象創建一個正則表達式轉義字符需要再次逃脫怎麼做在sizzle.js工作下面的代碼 -sizzle.js中的正則表達式如何工作?

identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+" 

如果\\\\\\\ = \\\\w = \w然後怎麼做\0 = \0當只有使用單個反斜槓?

當谷歌控制檯identifier運行是"(?:\\\\.|[\w-]|[^-\\xa0])+"

這是一個錯誤還是我沒有理解正確?如果這是正確的,那麼它是如何工作的?\0的目的是什麼?

+0

替代'\ 0',使用'\\ x00' –

+0

'\ 0'是一個簡單的字符,可以立即得到解析。你只需要對特殊字符類或其他特殊的東西(比如'\ w')使用多個反斜槓,因爲它們不僅僅是字符。這是你問的嗎? – Xufox

+0

@Xufox是的,謝謝。我仍然對此感到陌生,並且我注意到我的帖子中包含太多反斜槓。 – usr56777

回答

1

如果你的正則表達式需要包含一個反斜槓—例如,因爲你需要像\((其中實際(匹配)或\w(它匹配字母或數字或下劃線)—和正在創建的正則表達式從字符串文字中,然後您需要編寫\\,在正則表達式中最終爲\

但是在你的\0的例子中,正則表達式不是需要包含一個反斜槓。它只需要包含字符U+0000(與自身匹配)。所以字符串文字可以只包含\0,最後以字符U + 0000結尾。

+0

這是有道理的。謝謝。 – usr56777

+0

@ usr56777:不客氣! – ruakh