如何全面验证澳大利亚电话号码?我需要这个用于我正在编写的应用程序。您可以假设它是从澳大利亚境内拨打的。我想使用白名单方法。
到目前为止,这是我的规则(删除任何空格后): -
我有什么遗漏的吗?
区域代码是必需的,因为当用户处于不同的状态时,我们可能会在一个状态下从我们的传真服务器发送传真。
(我不是问如何从上述规则中制作正则表达式,但如果这些规则是正确的那样)。
答案 0 :(得分:9)
截至一年前,我的规则看起来像:
02[3-9]\d{7} NSW/ACT
03[4-9]\d{7} VIC/TAS
07[3-9]\d{7} QLD
08\d{8} SA/NT/WA
04[\d]{8} Moblies 04x[123] = Optus, 04x[456] = Voda, 04x[0789] = Telstra
0500[\d]{6} Find me anywhere server
0550[\d]{6} VoIP
059[\d]{7} Enum
13[\d]{4} Local rate
1300[\d]{6} Local rate
1800[\d]{6} Free call
0198[\d]{2} Data networks (local call anyway I think)
0198[\d]{6}
190[\d]{7} Premium rate
答案 1 :(得分:2)
基于之前的一些答案(我将使用正则表达式,因为它更整洁):
请注意,有效的区号值为[23478]。我还假设1800个数字仍然存在。我想也可能有1900个数字。
此外,000和112是有效的紧急号码:根据您的具体使用情况,您可能希望明确允许或拒绝这些号码。如果您正在存储“这是我的电话号码”,那么您可能希望禁用紧急号码,但是对于类似拨号方案的内容,您可能希望允许这些号码。
答案 2 :(得分:1)
0011不是唯一的国际访问代码。例如,通过传真拨打海外您应该使用0015 - 它避免了压缩的语音剪切效果,这对传真(或数据,如果您碰巧使用调制解调器)不利。我的办公室电话数据库在一些国际传真号码上有0015前缀。还有其他特殊用途的国际拨号代码。
我仍然看到手机号码写成(0411)123 456
答案 3 :(得分:1)
要获得最终列表,请尝试https://github.com/googlei18n/libphonenumber
Google常用的Java,C ++和JavaScript库,用于解析,格式化,存储和验证国际电话号码。 Java版本针对在智能手机上运行进行了优化,自4.0版以来一直被Android框架使用(Ice Cream Sandwich)。
您可以在此处进行测试:https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html
这对我的小工作来说太过分了,我推广了我的测试,但是这个库可以让你测试你的规则:)
答案 4 :(得分:0)
我也很想删除括号。我仍然每隔一段时间看到电话号码写成“(0212)34 5678”。
还有008号码在使用吗? 1800怎么样?我认为这是一个类似于1300的有效前缀。
答案 5 :(得分:0)
这可能就是你所追求的:
http://www.comlaw.gov.au/comlaw%5Cmanagement.nsf/lookupindexpagesbyid/IP200506356?OpenDocument
1997年电信编号计划 建立运输服务编号和使用运输服务提供数字的框架,规定与运输服务供应有关的使用数量,并建立数字分配和可携带性的框架。
这是一份简短的261页文档,其中包含您需要知道的所有内容:)