基于正则验证中国手机号码(2017) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Septembers
V2EX    正则表达式

基于正则验证中国手机号码(2017)

  •  5
     
  •   Septembers 2017-12-22 08:08:47 +08:00 5854 次点击
    这是一个创建于 2850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下正则基于 "中国内地移动终端通讯号码" 使用 regexgen 构建生成

    正则验证范围包括 中国移动、中国联通、中国电信(含虚拟运营商号段,不含物联网及卫星号段)

    ^1(?:70\d|(?:9[89]|8[0-24-9]|7[135-8]|66|5[0-35-9])\d|3(?:4[0-8]|[0-35-9]\d))\d{7}$ 

    本正则构建于 2017/12/22 请注意实效性,请以最新的《电信网编号计划》为准。

    see https://zh.wikipedia.org/wiki/中国内地移动终端通讯号码

    see http://www.miit.gov.cn/n1146290/n4388791/c5623706/content.html

    see https://septs.pw/archives/59


    如需生成器请参考如下

    https://gist.github.com/septs/8cb9f6298fa59caef39229fb04c36609

    43 条回复    2017-12-24 10:10:08 +08:00
    lhx2008
        1
    lhx2008  
       2017-12-22 08:13:37 +08:00 via Android
    好复杂,不过收藏了
    ReysC
        2
    ReysC  
       2017-12-22 08:34:25 +08:00
    多谢共享~
    ---
    这个要保存起来,下次做验证用。
    xujiang
        3
    xujiang  
       2017-12-22 08:37:23 +08:00
    mark,多谢
    jingniao
        4
    jingniao  
       2017-12-22 08:43:20 +08:00 via Android
    说实话,我看到过验证 1 开头,然后 10 位数字的的……
    rogwan
        5
    rogwan  
       2017-12-22 08:46:41 +08:00 via Android
    ^1[345789][0-9]{9}$

    极简版,欢迎使用
    superpeaser
        6
    superpeaser  
       2017-12-22 08:48:35 +08:00 via iPhone
    前台验证 1 开头,11 位字符,哈哈哈
    @jingniao
    0ZXYDDu796nVCFxq
        7
    0ZXYDDu796nVCFxq  
       2017-12-22 08:51:58 +08:00 via iPhone
    替换掉空格,减号,然后转成整数类型,比较几次大小不是更好?
    Chappako
        8
    Chappako  
       2017-12-22 08:52:18 +08:00   4
    Chappako
        9
    Chappako  
       2017-12-22 08:53:40 +08:00
    @rogwan 你这不支持 166 段啊
    rogwan
        10
    rogwan  
       2017-12-22 08:56:13 +08:00 via Android
    @Chappako 不知道出了 166 号段啊,补上:

    ^1[3456789][0-9]{9}$
    zlhsvc
        11
    zlhsvc  
       2017-12-22 09:03:06 +08:00
    这样验证很久了 ^1(\d){10}$
    nameryan
        12
    nameryan  
       2017-12-22 09:03:33 +08:00
    仿佛又回到了过去的 V2EX,这才有点感觉
    DrJoseph
        13
    DrJoseph  
       2017-12-22 09:08:27 +08:00
    这样的帖子不应该被埋没,支持一下
    lingo
        14
    lingo  
       2017-12-22 09:11:07 +08:00
    我也 1d10 验证了很久。。。
    用户非要输个错的,乱输个别人的我也验证不了不是。
    izzyleung
        15
    izzyleung  
       2017-12-22 09:19:35 +08:00   1
    SourceMan
        16
    SourceMan  
       2017-12-22 09:29:57 +08:00
    已收藏
    这样的帖子难得
    AdamChrist
        17
    AdamChrist  
       2017-12-22 09:33:35 +08:00
    3q
    bxj
        18
    bxj  
       2017-12-22 09:34:17 +08:00
    死盖伊.....
    renyijiu
        19
    renyijiu  
       2017-12-22 09:40:37 +08:00
    @jingniao 我就是这么验证的。。。。因为功能中手机号没什么真实作用
    wzw
        20
    wzw  
       2017-12-22 10:38:03 +08:00
    大家来说说 香港 台湾 美国 电话号码 的正则
    34C
        21
    34C  
       2017-12-22 10:46:31 +08:00
    前端验证 1 开头 10 数字,后端发短信验证码才是王道……
    如果不需要短信验证码的,怎么验都是白搭,填个 13800138000 就过了
    ZxBing0066
        22
    ZxBing0066  
       2017-12-22 11:08:23 +08:00
    没啥意义 直接 /1\d{10}/够用了,真实性还得靠短信
    mokeyjay
        23
    mokeyjay  
       2017-12-22 11:10:15 +08:00
    没啥意义 直接 /1\d{10}/够用了,真实性还得靠短信 +1
    freeminder
        24
    freeminder  
       2017-12-22 11:11:43 +08:00
    写这么多,尾巴还是`\d{7}`
    ven
        25
    ven  
       2017-12-22 11:17:04 +08:00
    @34C 后端也不一定要验证,好一点的短信服务都是按照成功付费的,13800138000 这种一般会返回空号或者不允许发送~
    wzw
        26
    wzw  
       2017-12-22 11:38:53 +08:00 via Android
    @ven 阿里云 好像 不是成功付费
    pofycn
        27
    pofycn  
       2017-12-22 11:40:26 +08:00 via Android
    马一下,说不定以后用的到哈哈
    guyskk0x0
        28
    guyskk0x0  
       2017-12-22 11:42:56 +08:00 via Android
    重要的发短信验证码验证,不重要的验证下 1 开头 11 位数字就行了,复杂的正则容易误杀正常手机号
    guyskk0x0
        29
    guyskk0x0  
       2017-12-22 11:46:12 +08:00 via Android
    之前遇到过用户反馈注册不了,排查发现是正则的锅,这种有时效性的正则尽量不要用
    quicknight
        30
    quicknight  
       2017-12-22 11:55:09 +08:00
    用正则式验证手机号,除了给维护带来麻烦,几乎没有好处
    验证手机号,只能靠短信
    quicknight
        31
    quicknight  
       2017-12-22 11:56:00 +08:00
    @jingniao 这种都比复杂的正则式要靠谱
    oh
        32
    oh  
       2017-12-22 11:59:57 +08:00 via iPhone
    @ven 所以更可以验证有效性啊
    geelaw
        33
    geelaw  
       2017-12-22 12:05:29 +08:00 via iPhone
    不要用 \d,它不是 [0-9] 的另一种写法
    Oo0
        34
    Oo0  
       2017-12-22 12:08:32 +08:00
    短信才靠
    geelaw
        36
    geelaw  
       2017-12-22 12:25:24 +08:00
    @Septembers 你的第一个链接不是已经告诉你了么?
    jason19659
        37
    jason19659  
       2017-12-22 3:47:50 +08:00
    1\d{10}
    3IOhG7M0knRu5UlC
        38
    3IOhG7M0knRu5UlC  
       2017-12-22 13:52:26 +08:00 via Android
    我一般只验证是数字就行了,然后靠短信验证码
    q409195961
        39
    q409195961  
       2017-12-22 14:27:11 +08:00
    有谁分享下最新的省市区 JSON 数据呗
    Septembers
        40
    Septembers  
    OP
       2017-12-22 14:34:36 +08:00
    ETiV
        41
    ETiV  
       2017-12-22 14:56:25 +08:00 via iPhone
    前端 1d10
    后端遇到 100d8 的就通过微信发验证码给我,可以有测试用的账户
    evolify
        42
    evolify  
       2017-12-22 16:11:16 +08:00
    早来 v2 就好了,刚刚自己琢磨了半天
    bk201
        43
    bk201  
       2017-12-24 10:10:08 +08:00 via iPhone
    这样靠正则验证容易出问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2670 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:38 PVG 21:38 LAX 06:38 JFK 09:38
    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