首页 文章

什么是电话号码的最佳正则表达式? [重复]

提问于
浏览
2

可能重复:电话号码验证的综合正则表达式正则表达式将匹配有效的国际电话号码?

我在StackOverflow上看到了与电话号码匹配的正则表达式上的一些帖子 . 但是,许多人似乎没有考虑可能的空格或数字之间的虚线以提高可读性 .

我来自荷兰,但我想使用匹配任何电话号码的正则表达式,包括在国外的电话号码 .

我想将它用于一个插件,例如用于浏览器的Skype查找和替换插件 .

目前,我正在使用以下正则表达式:

^((\+)?)([\s-.\(\)]*\d{1}){8,13}$

有没有人对那个有任何改进?

1 回答

  • 3

    我会去的

    # 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
    

    但一般来说,电话号码的重叠文本表示太多,以至于不同国家/地区使用单个正则表达式 . 如果你能匹配所有的陈述,你会得到许多误报 . 在瑞士可能是一个数字可能是俄罗斯,德国或加纳的其他东西 . 这一切都是为了 balancer 预先准备和召回以及将Regex优化到您真正需要的国家 .

相关问题