2014-09-03 66 views
-1

我試圖爲某些郵編編寫正則表達式,並注意到這種怪異。正則表達式:爲什麼/ ^(( d | - ){5,10})/匹配'20866 United States',匹配組爲6?

使用/^((\d|-){5,10})/'20866 United States'產生的匹配組:

1)20866

2)6

我不理解的第二場比賽。有任何想法嗎?

+1

你是怎麼得到這個結果呢?什麼語言? – Barmar 2014-09-03 19:01:41

+4

,因爲你也有一個分組。 – HuStmpHrrr 2014-09-03 19:01:50

+2

@HuStmpHrrr是正確的,因爲你正在捕獲2組。爲什麼不使用'/ [\ d - ] {5,10} /'不需要組,這將很好地匹配。 – engineersmnky 2014-09-03 19:02:53

回答

6

(\d|-)也是一個組,當你有一個重複的組時,最後一次重複通常是被捕獲的組。 (有些引擎可以捕獲所有這些,太。)

你可以把它非捕獲:

(?:\d|-){5,10} 

或避免組共:

[\d-]{5,10}