2010-06-21 61 views
1

任何人都可以將這個正則表達式精確/翻譯成英文嗎?正則表達式中的元字符和括號

謝謝。

var g = "123456".match(/(.)(.)/); 

我已經注意到,輸出如下所示:

12,1,2 

,我知道點意味着除了新行的任何字符。但是這實際上是做什麼的?

+1

我不知道,但它讓我緊張和出汗! – 2010-06-22 01:07:05

回答

4

一對括號(沒有?作爲第一個字符,表示其他行爲)會將內容捕獲到一個組中。

在您的示例中,數組中的第一項是整個匹配項,後續項是任何組匹配項。

如果你的代碼是類似的東西可能會更清楚:

var g = "123456".match(/.(.).(.)./); 

這將匹配5個字符,將第二和分別第四到組1和2,所以輸出12345,2,4

如果要純粹分組而不捕獲內容,請使用(?:...)語法,?:部分指示未捕獲組。 (有各種雜七雜八組的東西,比如向前看符號和其他fun stuff。)

讓我知道,如果這是明確的,或將進一步解釋的幫助?

+0

謝謝你的解釋。 – 2010-06-22 00:05:26

1

它尋找兩個字符 - 任何字符,因爲點 - 和'捕捉'他們,以便您可以查找整個匹配的字符串,併爲每個子字符串(捕獲)以及。