2012-10-26 49 views

回答

12

使用3個可選的數字:

^\d{2}\d{3}?$ 

注意,一些正則表達式引擎將任何重複修飾符(甚至是固定的)作爲ungreedy改性劑,這似乎引起了問題後解釋?兩位數的情況。如果遇到這種情況,使用:

^\d{2}(?:\d{3})?$ 

您可以在this great tutorial一些基本的正則表達式閱讀起來。

順便說一句,上面實際上相當於(但略微更有效)這一個使用交替:

^(?:\d{2}|\d{5})$ 

(只是爲了顯示你另一個正則表達式的概念的緣故)

+0

-1。 Java中的第一個是錯誤的。 '?'表示延遲匹配。 – nhahtdh

+0

@nhahtdh,只有當{{}}是一個範圍,或者不是? –

+0

@ m.buettner:當重複次數固定時,我認爲與正常情況不同,但'?'將被解釋爲懶惰。 – nhahtdh

0
/^\A\d{2}\z$|^\A\d{5}\z$/ 

A含義輸入開始和z含義輸入結束。

這適用於PHP和JAVA;不確定關於js或perl。