2013-09-23 36 views
6

有人可以告訴我如何匹配4位數字在正則表達式中什麼都沒有?我一直在使用RegexBuddy,到目前爲止我已經提出了這個問題,但幫助文本是說'或者匹配下面的正則表達式編號2 - 如果這個匹配嘗試失敗,則匹配嘗試失敗,如果匹配'管。正則表達式,數字或空

我想要兩者中的任何一個提供積極的匹配。

^\d{4}|$ 
+0

上述正則表達式是正確的,我不認爲。當然^意味着開始行和$意味着行結束,我不知道是否在你的情況下,將需要。但是'\ d {4} |'確實意味着「4位數或者什麼都不是」。 –

+0

實際上匹配是否以4位數​​開始或什麼都不是。所以1234a會匹配 –

回答

11

無論是4位或無:

^(?:\d{4}|)$ 

這是最接近你試圖做。

我會去一個稍微短下列操作之一:

^(?:\d{4})?$ 

^\d{4}|$ 

這正則表達式指:

^\d{4} OR $

第只會匹配任何以4位數字開頭的字符串報告匹配的所有內容(它匹配字符串的末尾,並且由於沒有指定字符,它將匹配所有字符串的末尾)。

當你使用一組,你得到:

無論^(?:\d{4})$^(?:)$(注意,OR運算的「限制」改變),然後將其等同於或者^\d{4}$^$

+1

可能值得解釋的是'^ \ d {4} | $'會匹配'1234a',因爲$不包含在第一個匹配 –

+0

@BobVale我可能還會添加'^ \ d {4} | $'作爲一個整體將匹配任何東西,因爲'$':) – Jerry

2

我認爲你的方法是合理的。你需要保持運算符的優先考慮,但並請使用

^(\d{4}|)$ 

^\d{4}$|^$ 
1

如果需要OR

^(\d{4})?$