V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pocarisweat
V2EX  ›  程序员

广电 192 手机号段发布了,你的业务代码里适配了吗?

  •  
  •   pocarisweat · 2022-07-01 00:42:17 +08:00 · 7130 次点击
    这是一个创建于 875 天前的主题,其中的信息可能已经有所发展或是发生改变。
    51 条回复    2022-07-02 12:25:07 +08:00
    Zerek
        1
    Zerek  
       2022-07-01 01:40:28 +08:00 via Android
    10000000000 < phone < 20000000000
    就这样
    FrankHB
        2
    FrankHB  
       2022-07-01 03:22:37 +08:00
    @Zerek +86:?
    flyqie
        3
    flyqie  
       2022-07-01 03:45:14 +08:00 via Android
    @FrankHB

    估计是业务不考虑其他国家?

    不然绝对要命,这个逻辑太鬼才了。
    ttgo
        4
    ttgo  
       2022-07-01 07:16:28 +08:00
    好的,我查查网上有没有人更新了正则表达式。
    zhouwb
        5
    zhouwb  
       2022-07-01 07:40:20 +08:00
    正在考虑要选个什么号呢,192168 后面写什么呢?
    elfive
        6
    elfive  
       2022-07-01 07:48:32 +08:00 via iPhone
    出来这么多年的 191 号段还有好多政务机关和个别另外服务没有适配,192 估计只会更长。
    elfive
        7
    elfive  
       2022-07-01 07:48:53 +08:00 via iPhone
    @elfive 另外->境外
    o00o
        8
    o00o  
       2022-07-01 08:05:51 +08:00
    @zhouwb 1921685858X
    estk
        9
    estk  
       2022-07-01 08:24:18 +08:00 via Android
    我的适配规则是,1 开头的 11 位号码都当做手机号
    hervey0424
        10
    hervey0424  
       2022-07-01 08:24:36 +08:00
    @FrankHB replace("+86","")
    jslang
        11
    jslang  
       2022-07-01 08:30:50 +08:00
    /^1[3-9]\d{9}$/
    lcy630409
        12
    lcy630409  
       2022-07-01 08:51:46 +08:00
    不管,直接提交给 api ,接口说有问题 就有问题,没问题就没问题
    cpstar
        13
    cpstar  
       2022-07-01 09:02:48 +08:00   ❤️ 1
    @lcy630409 12# 😂刚看隔壁帖子,说正则验证域名,最佳方法是扔给 DNS 能解析 IP 就是正常域名,效果等同👍
    abigeater
        14
    abigeater  
       2022-07-01 09:15:47 +08:00
    从有 19 开头的手机号后就把正则改成#11 楼一样了
    liuzhaowei55
        15
    liuzhaowei55  
       2022-07-01 09:19:53 +08:00 via iPhone
    等短信通道支持了,然后有用户投诉的时候再支持。
    anguiao
        16
    anguiao  
       2022-07-01 09:25:26 +08:00   ❤️ 1
    1 开头、11 位数字,其他我都不校验。号段隔一段时间出一个,做那么严格的校验,意义在哪?
    qwerthhusn
        17
    qwerthhusn  
       2022-07-01 09:27:07 +08:00
    1[3-9]\\d{9}
    imydou
        18
    imydou  
       2022-07-01 09:29:23 +08:00
    我微信几年前就绑定了 19298887870
    添加好友能搜到
    xiangyuecn
        19
    xiangyuecn  
       2022-07-01 09:41:00 +08:00   ❤️ 1
    绝大部分在代码里写号段 都是沙雕行为😂 尤其是那种叫做 “手机号正则表达式” 的,里面蹩脚的写了一大堆匹配,又不维护。。。

    几年前的吐槽: /t/527552
    julyclyde
        20
    julyclyde  
       2022-07-01 09:44:27 +08:00
    @cpstar 也可能 DNS 服务器返回的是 bogus 响应
    agagega
        21
    agagega  
       2022-07-01 10:08:31 +08:00
    @cpstar
    没记错的话 log4j 那个漏洞,就是因为干了类似的事…
    lcy630409
        22
    lcy630409  
       2022-07-01 10:13:41 +08:00
    @cpstar 是这个意思,你不管怎么支持,你的上游短信接口如果不支持 鸟用没有,还不用直接丢给上游接口,他说咋地就咋地
    weixiangzhe
        23
    weixiangzhe  
       2022-07-01 10:14:22 +08:00
    https://baijiahao.baidu.com/s?id=1565706136985488&wfr=spider&for=pc
    不好意思未来可能还有 9 开头的,大家注意了

    deplivesb
        24
    deplivesb  
       2022-07-01 10:17:11 +08:00
    我腾讯王卡 的 166 号段,现在还有地方提示手机号不合法呢
    vZexc0m
        25
    vZexc0m  
       2022-07-01 11:03:49 +08:00
    ^(?:13|14|15|16|17|18|19)[0-9]{9}$
    IvanLi127
        26
    IvanLi127  
       2022-07-01 11:09:47 +08:00   ❤️ 1
    直接 `^1\d{10}$`,少即是多
    pengtdyd
        27
    pengtdyd  
       2022-07-01 13:37:44 +08:00
    手机号直接不验证,varchar(200),不光考虑到号段变更的问题,还有每个国家都不同,长度也不一样,格式也不同,用的哪个通信运营商就直接丢过去完事。
    tyrone2333
        28
    tyrone2333  
       2022-07-01 13:43:24 +08:00
    /^1\d{10}$/ 专治一切花里胡哨
    hs444
        29
    hs444  
       2022-07-01 14:12:39 +08:00
    真要确认手机号有效性就用短信验证码,纯用正就能校验就是自己给自己找麻烦
    issakchill
        30
    issakchill  
       2022-07-01 14:22:12 +08:00
    public final static Pattern MOBILE = Pattern.compile("(?:0|86|\\+86)?1[3-9]\\d{9}");
    AoEiuV020CN
        31
    AoEiuV020CN  
       2022-07-01 16:17:27 +08:00   ❤️ 1
    ysc3839
        32
    ysc3839  
       2022-07-01 16:23:50 +08:00 via Android
    @AoEiuV020CN 国际手机号,只需要判断第一个字符是加号,后续都是数字就可以了吧?国内的话全都是数字即可。
    yaoyao1128
        33
    yaoyao1128  
       2022-07-01 16:44:18 +08:00
    @ysc3839 还需要考虑境外手机号前面 0 的问题。部分国家的手机号也有类似区号的 0
    Alipay 对于选择韩国后输入 1092811234 和 01092811234 就认成了两个账户……
    P.S. 那天看到一个正则 133 号段都被当成了非手机号……………… 14 、16 、17 、19 直接没有考虑
    Cat7373
        34
    Cat7373  
       2022-07-01 16:46:34 +08:00
    @zhouwb 19216801255
    ysc3839
        35
    ysc3839  
       2022-07-01 17:06:09 +08:00 via Android
    @yaoyao1128 看楼上那个代码,不需要考虑这种情况吧?我觉得与其直接不检查,不如检查一下是不是全都是数字,或者开头是加号、后面全是数字。
    brust
        36
    brust  
       2022-07-01 17:06:23 +08:00
    return phone.lenght == 11
    whitehack
        37
    whitehack  
       2022-07-01 17:19:42 +08:00
    realpg
        38
    realpg  
       2022-07-01 17:40:01 +08:00
    130 0000 0000 ~ 199 9999 9999
    我在出 186 那年开始就这么写了
    sometime
        39
    sometime  
       2022-07-01 17:46:59 +08:00
    调用手机号码归属地查询,能查到的就是手机号😂
    AoEiuV020CN
        40
    AoEiuV020CN  
       2022-07-01 17:55:21 +08:00
    @ysc3839 #32 我这里的业务场景是不带区号的手机号,非要判断其实是能做到的,只是因为这个方法总出 bug ,就干脆不判断了,
    至于你说的加号,是不是忘了国内也可以+86 的?
    ysc3839
        41
    ysc3839  
       2022-07-01 18:11:37 +08:00
    @AoEiuV020CN 按你的需求,是国际手机号和国内手机号其中之一就满足,那带上 +86 的话也落到了“国际手机号”里面,不影响结果。我说的是你截图的这种需求,检查一下全都是数字,或者开头是加号、后面全是数字,会比不检查更好,别的需求当然是另当别论了。
    sekisui
        42
    sekisui  
       2022-07-01 18:12:55 +08:00 via iPhone
    @imydou 为什么几年前就能绑定
    koor
        43
    koor  
       2022-07-01 18:17:51 +08:00
    @sekisui #42 应该是美国手机号。+1(921)xxx-xxxx
    AoEiuV020CN
        44
    AoEiuV020CN  
       2022-07-01 18:31:47 +08:00
    @ysc3839 #41 你没明白我的意思,需求明确甚至最好能给出单元测试的话检查手机号不算麻烦,
    问题就是需求不明确,功能在变化,一开始并没有外国手机号的要求,一开始限制号码段也没有 bug ,
    我说没有区号也只是现在这样,写代码的人考虑不了未来的事,
    种种原因导致这段正则反复改反复有问题,最后才直接 return true 了,
    反正最终发短信失败那就是号码不对,
    imydou
        45
    imydou  
       2022-07-01 20:47:46 +08:00
    @sekisui #42
    @koor #43 没错,就是+1
    sekisui
        46
    sekisui  
       2022-07-01 20:54:14 +08:00 via iPhone
    @imydou 我记得 19288888888 微信也可以搜到,看来也是这个原因
    realpg
        47
    realpg  
       2022-07-02 05:20:07 +08:00
    @sekisui #46
    1928888 连路由都没有,内部人也没用
    你说的 19288888888 应该是美国号,你搜+8619288888888 出不来,那就是美国号
    realpg
        48
    realpg  
       2022-07-02 05:22:08 +08:00
    一直想搞几个手机号:
    17216255255
    19216819911
    前面的有路由,归属地重庆
    后面的还没定归属地路由
    lengye
        49
    lengye  
       2022-07-02 09:13:27 +08:00
    @Zerek 这个吊,哈哈
    nanjoyoshino
        50
    nanjoyoshino  
       2022-07-02 09:17:54 +08:00
    要是不能一直更新规则还不如干脆别做匹配,我的联通 166 号段的卡都用了多少年了,还有一些软件说是非法号码
    zabio
        51
    zabio  
       2022-07-02 12:25:07 +08:00
    昨天到手 192 号卡打不了电话,上不了网,信号极其不稳定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:41 · PVG 05:41 · LAX 13:41 · JFK 16:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.