[英]Regex for Australian phone number validation
我嘗試在正則表達式下進行電話號碼驗證,但沒有正常工作,
^([+61|0](2|4|3|7|8|)){0,2}([ 0-9]|[(]){2,3}([)]|[0-9]){6}([ ])[0-9]{7,20}$
以下是我希望通過驗證的示例
+61(02)89876544
+61 2 8986 6544
02 8986 6544
+61289876544
0414 570776
0414570776
0414 570 776
+61 414 570776
+61 (0)414 570776
也接受以下字符。 ()-+ 空格
那就是電話號碼結構。 最簡單的解決方案是要求用戶以特定格式輸入或讓表單自動格式化。 如果你必須使用正則表達式,這就是我提出的:
^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})$
捕獲組:
演示: https : //regex101.com/r/dkFASs/6
這就是我過去常用的格式: https : //en.wikipedia.org/wiki/Telephone_numbers_in_Australia
在處理這樣一個更大的正則表達式時,我發現最常用的方法是將測試用例放到像regex101.com這樣的工具中,然后通過捕獲組捕獲組(如果可以,則命名它們),直到結束。 一旦一組不匹配,就改變你已有的組,直到它完成。
編輯2019:由於這個問題偶爾會引起注意,我想要注意,如果可能的話,最好使用驗證庫。 我的建議是谷歌的i18n電話號碼庫 。 它比正則表達式更強大。
我會首先從電話號碼中刪除所有空格,因為更多模式將意味着更復雜的正則表達式,然后應用以下內容:
(?:\+?61)?(?:\(0\)[23478]|\(?0?[23478]\)?)\d{8}
據我所知,它有效。
將盡快寫下解釋
我對@ 3ocene的回復進行了投票。 但后來發現並不符合我的情況。
這是我的測試用例(非詳盡):
+(61) 455 562 400
+61-455-562-400
+61 455 562 400
+(61)-455-562-400
+(61) 455 562 400
(02) 4371 3164
(02) 4371-3164
02 80268989
03 80268989
04 80268989
05 80268989
433245898
433 245 898
433-245-898
4555-62400
123456
08 54 587 456
123456是否定的..
這就是我建立的,所以它可以幫助這里的人:
(\(+61\)|\+61|\(0[1-9]\)|0[1-9])?( ?-?[0-9]){6,9}
這是Regexer鏈接:
嘗試這個
\b([\+-]?\d{2}|\d{4})\s*\(?\d+\)?\s*(?:\d+\s*)+\b
修改 SydMK 以包括 13、180、19、1300、1800、1900
13 xxxx 和 1300 xxx xxx – “本地費率”呼叫,VoIP 和移動電話用戶除外
180 xxxx 和 1800 xxx xxx – FreeCall
19 xxxx 和 19xx xxxx – 高級短信
^(\+?\(61\)|\(\+?61\)|\+?61|1[ \-]{0,1}(3|80|9|300|800|900)|\(0[\d]\)|0[\d])?(( ?-?[\d]){8,9}|[\d]{4})$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.