2011-09-07 78 views

回答

0

這應該與你需要的數字:

^(?:9[0-9]{2}(?:[79][0-9]|8[0-8])[0-9]{4}|[0-8][0-9]{8})$ 

9[0-9]{2}(?:[79][0-9]|8[0-8])[0-9]{4}將匹配以9開始的數字,並[0-8][0-9]{8}將剩下的匹配。 (不以900-999開頭,不以9開頭)。
例子:http://rubular.com/r/6uVWC0cLgX

如果你的氣息支持,您可以使用lookahead簡化模式:

^(?:9(?=..(?!89)[7-9])|[0-8])[0-9]{8}$ 

這裏唯一的問題是第一位。它可以匹配一個9和2個數字,以及一個70和99之間的數字(但不是89),然後再多8個數字。
例如:http://rubular.com/r/UVVkfJ3v3V

+0

對於條件正則表達式,這幾乎是一個很好的用例,(^(?(?= ...(?!89)[7-9])9 | [0-8])[0-9] { 8} $',但仍然不如前視變體。 – Kobi

2

這裏是會找到以900全部九位數字符合您的條件的正則表達式:

^9[0-9][0-9](7[0-9]|8[0-8]|9[0-9])[0-9]{4} 

上述正則表達式的第二部分是一個OR條件(使用|符號)的匹配70 - 79,80 - 88和90 - 99模式。在像http://regexpal.com/這樣的在線測試器上測試它,看看它是如何工作的。如果你想排除無效數字,你可能需要改變條件來尋找無效數字(例如那些以900開頭的數字,其中第四位數字是6或更少)。

+0

小評論:您忘了其餘的數字,您還需要'| [0-8] [0-9] {8}'。不知何故,我沒有意識到你的回答是正確的,直到我完成我的任務,這非常相似。歡迎來到堆棧溢出。 – Kobi

+0

+1,但請將所有'[0-9]'改爲'\ d',以使正則表達式看起來更好一些(除非您擔心在輸入數據中處理其他編號系統)。 –

相關問題