2012-06-22 104 views
1

我已經把這個小的正則表達式公式放在一起,驗證數字以確保它們是正確的Australian mobile number。我遇到的問題是新的Telstra號碼不符合標準,因此它會引發錯誤。正則表達式來驗證澳大利亞手機號碼

數字格式是其接受是

0421813629,0430091460,等...

雖然當我們使用一個具有3位5或更高版本似乎拋出一個錯誤,並Telstras新數字有一個7在3位點

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/ 

我相信錯誤有事情做與[0-57-9] | 3

+1

如果您能告訴我們澳大利亞電話號碼的格式是什麼,那將會很好。 – m0skit0

+0

@ m0skit0我列舉了幾個例子,有10位數字,總是從04 ******** –

+0

開始SO到底是什麼問題?你想要一個正則表達式公式來做到這一點?這將無法正常工作,因爲你不會知道它是一個壞數字還是隻是一個Telstra號碼 – Limey

回答

2

我只是爲你重寫整個事情。正則表達式將編譯,但我還沒有測試一切。正則表達式只能處理已經清除空格的字符串(因爲空格可以是任意的,不會改變電話號碼的含義)。正則表達式基於維基百科的文章。如果出現任何錯誤,祝你好運,如果他們決定分配備用塊,也祝你好運。我通過將正在使用的10^7,10^6,10^5和10^4數字塊組合在一起來編寫正則表達式。

/^(?:\+?61|0)4(?:[01]\d{3}|(?:2[1-9]|3[0-57-9]|4[7-9]|5[0-15-9]|6[679]|7[3-8]|8[1478]|9[07-9])\d{2}|(?:20[2-9]|444|52[0-6]|68[3-9]|70[0-7]|79[01]|820|890|91[0-4])\d|(?:200[0-3]|201[01]|8984))\d{4}$/ 

如果你想在正則表達式維護,你應該寫單獨每個電話公司的,然後在連接字符串,並呼籲RegExp構造建立從字符串的正則表達式。可能效率稍低,但在維護時你會保持理智。

+0

的第三位數字中,這似乎解決了我們在數據中遇到的麻煩數字的問題。謝謝 –

+0

您如何在ASP.net中將Javascript應用於上述RegEx? – Fandango68

+0

@ Fernando68:正則表達式本身對許多口味都是正確的。但是,我不知道你將使用它們的上下文給出進一步的建議。我建議你閱讀例子的文檔。 – nhahtdh

相關問題