我正在努力想出一个能使以下内容失效的正则表达式(电话号码)
到目前为止,我已经提出了
^((\+|00)\d{1,3}[- ]?)?\d{10}$
然而这失败了(没有发现以下内容)
请提供帮助
答案 0 :(得分:0)
如果您的电话号码不能包含空格(正如您的正则表达式所示),则回溯似乎是您的问题。
考虑你的正则表达式的这一部分:(\d{1,3}[- ]?)?\d
这里的东西是可选的破折号/空格字符串。如果匹配不匹配,您最终会得到一个连续数字列表。当引擎想要找到匹配项时,它会将部分国家/地区代码视为电话号码,反之亦然。
示例(空格要区分):+1 23456789012
也可以写为+123 456789012
。根据你的正则表达式,两者都匹配,但你可能只想获得第一个电话号码的匹配。
更新1
此正则表达式根据您的标准列表验证电话号码:
^(?:(?:\+61[- ]?\d{9}|0061[- ]?\d{9})|(?:\+|00)(?!(61))\d{1,6})$
它基本上有两个部分:
(?:\+61[- ]?\d{9}|0061[- ]?\d{9})
验证点1,2,3,4,5 (?:\+|00)(?!(61))\d{1,6})
验证第6点请记住,整数的长度取决于country code。