2015-06-03 31 views
1

我有以下字符串試圖瞭解 S是匹配

rule[param,argument] 

,但它可以只是

rule 

我試圖讓所有的話不加方括號和逗號。

/([\w]+)(\[\s([a-zA-Z\d_]+,?)*\])?/ 

正則表達式用得好好的,偏偏\ S是必要的,以匹配不同的話,不是字符串作爲一個整體,我不能弄明白。 據我所知,\ s匹配任何空格字符,它等於[ \t\n\r\f\v],但我沒有任何這些問題的字符串。 你能解釋爲什麼需要\s

我使用php和javascript測試代碼,結果是一樣的。

+1

什一個不錯的化身! –

回答

1

在上面的例子中,匹配的僅由該正則表達式[\w]+因爲所做的第二組作爲 可選做不被第二捕獲組內的圖案。

您可以通過運行([\w]+)(\[\s\t\t\t\t\t\t\t\t\t\t\t\t\t([a-zA-Z\d_]+,?)*\])?正則表達式來檢查它。不獲取匹配

DEMO

1

正則表達式的第二部分是不負責的,你得到的比賽..他們被([\w]+)

模式的內部[ ]字符串匹配,因爲你inluded的\s這是不是有串在你通過?

作出的模式可選見DEMO