广电 192 手机号段发布了,你的业务代码里适配了吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pocarisweat
V2EX    程序员

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

  •  
  •   pocarisweat 2022-07-01 00:42:17 +08:00 7603 点击
    这是一个创建于 1201 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 国际手机号,只需要判断第一个字符是加号,后续都是数字就可以了吧?国内的话全都是数字即可。
    yaoyaomoe
        33
    yaoyaomoe  
       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  
    PRO
       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  
    PRO
       2022-07-02 05:20:07 +08:00
    @sekisui #46
    1928888 连路由都没有,内部人也没用
    你说的 19288888888 应该是美国号,你搜+8619288888888 出不来,那就是美国号
    realpg
        48
    realpg  
    PRO
       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     Solana     1476 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:43 PVG 00:43 LAX 09:43 JFK 12:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86