1

我整理了这个验证数字的小正则表达式公式,以确保它们是正确的澳大利亚手机号码。我遇到的问题是新的 Telstra 号码不符合标准,因此会引发错误。

数字格式是它接受的是

0421813629、0430091460等...

虽然当我们使用 3 位数为 5 或更高的 a 时,它似乎会引发错误,而 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 有关

4

1 回答 1

3

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

于 2012-06-22T12:50:06.670 回答