2010-09-29 105 views
1

我使用以下正則表達式來匹配帳號。當我們最初把這個正則表達式放在一起時,規則是一個帳號只能以單個字母開頭。這已經改變了,我有一個賬號在字符串的開頭有3個字母。正則表達式有助於匹配多個字母

我想要一個正則表達式,它將匹配字符串開始處的最少1個字母和最多3個字母。最後一個問題是字符串的長度。它可以長達9個字符,最小值爲3.

這是我目前使用的。

'/^([A-Za-z]{1})([0-9]{7})$/'

有沒有一種方法,以配合這一切?

回答

5

你想:

^[A-Za-z]([A-Za-z]{2}|[A-Za-z][0-9]|[0-9]{2})[0-9]{0,6}$ 

初始[A-Za-z]確保它以字母開頭,第二位([A-Za-z]{2}|[A-Za-z][0-9]|[0-9]{2})確保它至少有三個字符,並且在開始由字母一至三個,並最後一位[0-9]{0,6}可以讓您最多可以輸入9個字符。

進一步解釋:

^     Start of string/line anchor. 
[A-Za-z]    First character must be alpha. 
([A-Za-z]{2}  Second/third character are either alpha/alpha, 
|[A-Za-z][0-9]  alpha/digit, 
|[0-9]{2}   or digit/digit 
)      (also guarantees minimum length of three). 
[0-9]{0,6}   Then up to six digits (to give length of 3 thru 9). 
$     End of string/line marker. 
+0

這不符合:「A0A」? – 2010-09-29 04:45:03

+0

謝爾登,原來是這樣的,你抓住了我的中期編輯。這個當前的問題通過確保字符2和3具有「AA」,「A0」或「00」的形式來解決這個問題。 – paxdiablo 2010-09-29 04:48:46

+0

現在看起來不錯。 +1 – 2010-09-29 04:51:14

0

試試這個:

'/^([A-Za-z]{1,3})([0-9]{0,6})$/' 

這將使你從1至3個字母和3至9個字元。

+1

這將匹配太短的「A」。 – 2010-09-29 04:47:18