不確定如何使用正則表達式執行以下操作...
一個九位數字不能以900-999開始,除了第四個和第五個數字是70-88或90-99。第一個數字取決於第四個和第五個數字的數字的正則表達式
我見到目前爲止以下內容:
^9[0-9][0-9]
這只是檢查前三個數字,我不知道如何把第二個條件。
不確定如何使用正則表達式執行以下操作...
一個九位數字不能以900-999開始,除了第四個和第五個數字是70-88或90-99。第一個數字取決於第四個和第五個數字的數字的正則表達式
我見到目前爲止以下內容:
^9[0-9][0-9]
這只是檢查前三個數字,我不知道如何把第二個條件。
這應該與你需要的數字:
^(?: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
這裏是會找到以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-8] [0-9] {8}'。不知何故,我沒有意識到你的回答是正確的,直到我完成我的任務,這非常相似。歡迎來到堆棧溢出。 – Kobi
+1,但請將所有'[0-9]'改爲'\ d',以使正則表達式看起來更好一些(除非您擔心在輸入數據中處理其他編號系統)。 –
對於條件正則表達式,這幾乎是一個很好的用例,(^(?(?= ...(?!89)[7-9])9 | [0-8])[0-9] { 8} $',但仍然不如前視變體。 – Kobi