正则表达式验证澳大利亚手机号码

时间:2012-06-22 11:43:01

标签: ruby-on-rails regex validation mobile

我已将这个小正则表达式公式放在一起,验证数字以确保它们是正确的Australian mobile number。我遇到的问题是新的Telstra号码不符合标准,因此它会抛出错误。

它接受的数字格式是

0421813629,0430091460等......

虽然当我们使用3位数为5或更高的数字时,它似乎会抛出一个错误,而Telstras的新数字在这个3位数字中有7位

/^(?:\+?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 个答案:

答案 0 :(得分:3)

我只是为你改写了整件事。正则表达式将编译,但我还没有测试一切。正则表达式只适用于已清空空格的字符串(因为空格可以是任意的,不会改变电话号码的含义)。正则表达式基于维基百科的文章。如果有任何错误,祝你好运,并且如果他们决定分配备用块,还可以保持好运。我通过将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构造函数从字符串构建正则表达式。可能效率稍低,但在维护它时你会保持理智。