2012-06-22 109 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

相关问题