Javascript 用于澳大利亚电话号码验证的正则表达式
我尝试在regex下面验证电话号码,但没有正常工作Javascript 用于澳大利亚电话号码验证的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我尝试在regex下面验证电话号码,但没有正常工作 ^([+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|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
以下字符也可以接受。
()-+空格试试这个
\b([\+-]?\d{2}|\d{4})\s*\(?\d+\)?\s*(?:\d+\s*)+\b
这就是电话号码结构。最简单的解决方案是要求用户以特定格式输入,或者让表单自动设置格式。如果您必须使用正则表达式,这就是我想到的:
^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})$
捕获组:
编辑2019:由于这个问题偶尔会引起注意,我想指出,如果可能的话,最好使用验证库。我的建议是。它比正则表达式更加健壮。我会首先删除电话号码中的所有空白,因为更多的模式意味着更复杂的正则表达式,然后应用以下内容:
(?:\+?61)?(?:\(0\)[23478]|\(?0?[23478]\)?)\d{8}
据我所知,它是有效的
很快就会写解释我对@3ocene的回答投了赞成票。但后来发现与我的情况不太相符 以下是我的测试用例(非详尽): 123456是负数 这是我建造的,所以它对这里的人很有帮助:
(\(+61\)|\+61|\(0[1-9]\)|0[1-9])?( ?-?[0-9]){6,9}
以下是Regexer链接:
看起来不错,我还必须设置角色限制最小7最大20你是什么意思?此正则表达式将与可选区号(可选零后跟1、2、3、4、5、7或8)和可选国家代码(可选+然后64)精确匹配8位数字。如果正则表达式不再是空的,那是因为里面有空格或破折号,或者更可能是因为末尾有空格。编辑:我希望你不是说正则表达式长度必须小于20个字符……电话号码长度应该是7到20个字符,并且模式错误在@KRR中显示javascript模式。我已经更新了它,以使用javascript引擎(我应该在前面检查哪一个),并在测试输入列表中包含最长的匹配(共19个字符)。@KRR,这个答案似乎每隔一段时间就会引起一些注意。如果它回答了您的问题,请您将其标记为已接受的答案,或者如果它没有,请详细说明您的问题,以便我能更好地回答它。(或者如果您认为不同的答案更好,请将该答案标记为已接受的答案)不是
+61吗(02)89876544
和+61(0)414 570776
无效?如果包含+61
,您不应该从区号中删除0
。
(\(+61\)|\+61|\(0[1-9]\)|0[1-9])?( ?-?[0-9]){6,9}