可能的重复:
用于电话号码验证的综合正则表达式 https://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation
什么正则表达式可以匹配有效的国际电话号码? https://stackoverflow.com/questions/2113908/what-regular-expression-will-match-valid-international-phone-numbers
我在 StackOverflow 上看到过一些关于匹配电话号码的正则表达式的帖子。
但许多人似乎没有考虑数字之间可能存在的空格或破折号以提高可读性。
我来自荷兰,但我想使用匹配任何电话号码(包括国外的电话号码)的正则表达式。
我想将它用于插件,例如浏览器的 Skype 查找和替换插件。
目前,我正在使用以下正则表达式:
^((\+)?)([\s-.\(\)]*\d{1}){8,13}$
有人对此有任何改进吗?
我会和
# countryCode
(?:\+\d{1,3}|0\d{1,3}|00\d{1,2})
# actual number
(?:[-\/\s.]|\d)+
# combined with optional country code and parantheses in between
^(?:\+\d{1,3}|0\d{1,3}|00\d{1,2})?(?:\s?\(\d+\))?(?:[-\/\s.]|\d)+$
这应该足以匹配大多数欧洲和美国的电话号码表示形式:
+49 123 999
0001 123.456
+31 (0) 8123
但一般来说,电话号码的重叠文本表示太多,以至于无法针对不同国家/地区使用单个正则表达式。
如果您可以匹配所有表示,您将得到许多误报。在瑞士可能是一个数字,在俄罗斯、德国或加纳可能是其他数字。
这一切都是为了平衡精确度和召回率,并根据您真正需要的国家/地区优化正则表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)