2011-02-18 49 views
6

我需要一個正則表達式來匹配一系列的一個或多個N位數字,以逗號分隔的匹配1或更大,即:需要正則表達式來剛好n位數字

abc12345def返回12345個
ABC12345, 23456def返回12345,23456

到目前爲止,我得到這個:\d{5}(,\d{5})*

問題是,它也是在這樣的情況下匹配:

123456收益12345,但我需要它不匹配,如果日Ë數比5。所以,我需要的正是5位數字長,如果一個數或長或短這是一個不匹配您正在使用哪種語言爲您的正則表達式

感謝

回答

5

?你想在你的\d{5}的周圍放置非數字標記;這裏是Perl語法(帶有Lukasz的負面預見/後視修復):

(?<![\d,])\d{5}(,\d{5})*(?![\d,]) 
+0

其實我覺得我得到了它! 「(?<!\ d)\ d {5}(?!\ d)(,(?<!\ d)\ d {5}(?!\ d))*」我用了前瞻, - – Lukasz 2011-02-18 18:05:37

3

其實我想我明白了! (?<!\d)\d{5}(?!\d)(,(?<!\d)\d{5}(?!\d))*

我用了前瞻,看看隱藏

感謝。

0

您可以使用此一:

/\D?\d{5}(?:,\d{5})?\D?/ 

解釋:

/ : regex delimiter 
\D? : non digit optionnal 
\d{5} : 5 digits 
(?: : begining of non-capture group 
,\d{5} : comma and 5 digits 
)? : end of group optionnal 
\D? : non digit optionnal 
/ : regex delimiter