V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
920678778
V2EX  ›  问与答

求助正则表达式

  •  
  •   920678778 · 2017-03-11 10:00:19 +08:00 · 2040 次点击
    这是一个创建于 2816 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位 V 友, 求一个能正确过滤 string 为合法号码的正则表达式, 包括常用 11 位手机号码, 紧急号码(110 等), 服务号码(95580 等), 400 开头的号码! 在线等!!!
    5 条回复    2017-03-11 19:50:29 +08:00
    Cbdy
        1
    Cbdy  
       2017-03-11 10:34:15 +08:00 via Android
    不同语言、库用的正则是有点不同的,如果真的要求一个正则,应该告诉具体的使用场景。

    正则实质很简单,与 dfa 是等价的,三十分钟足够掌握。。。
    imn1
        2
    imn1  
       2017-03-11 10:49:29 +08:00
    正则不能判断是否合法
    920678778
        3
    920678778  
    OP
       2017-03-11 10:53:22 +08:00
    @Cbdy 就是在键盘上输入一串数字(比如:*#+1234567890), 然后判断这个字符串是不是正常的电话号码.这样子.
    ^((13[0-9])|(14[5,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))\d{8}$, 找了一个匹配十一位电话号码的表达式. 但是一些紧急号码,和一些服务号没有包含进去.
    Rice
        4
    Rice  
       2017-03-11 11:30:47 +08:00 via iPhone
    据我的经验,正则是没法完全判断是否合法的
    srlp
        5
    srlp  
       2017-03-11 19:50:29 +08:00 via iPhone
    老实说,这种事情,不用正则更方便。而且这本身就不是简单的任务。

    如果不限制正则的话,可看 https://github.com/googlei18n/libphonenumber
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1926 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:22 · PVG 00:22 · LAX 08:22 · JFK 11:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.