zoukankan      html  css  js  c++  java
  • PHP 正则匹配手机号

    PHP 正则匹配手机号(国内)

    PHP提供了多种内置的正则匹配函数,如php_filter() 、php_grep()php_match_all()等,最重要的是我们要根据要判定的数据要求,来精准判定,以此来达到最后的目的。

    本次,我们判定国内的手机号格式,要求:不匹配卫星电话的号段

    电信网编号总览

    序号号码长度备注正则规则
    1 13x 11 公众移动通信网网号 ^13(4[0-8]d{7}|[0-3|5-9]d[0-9]d{8})$
    2 1349 11 公众移动通信网网号,卫星移动通信业务专用号段 ^1349d{7}$
    3 140XX 13 中国联通物联网网号 ^140d{10}$
    4 141XX 13 中国电信物联网网号 ^141d{10}$
    5 142XX~143XX 13 物联网网号 ^142d{10}$
    6 144XX 13 中国移动物联网网号 ^144d{10}$
    7 145~149 11 公众移动通信网网号 ^14[5-9]d{8}$
    8 15X 11 公众移动通信网网号 ^15d{9}$
    9 161~162 11 公众移动通信网网号 ^16[1-2]d{8}$
    10 164~167 11 公众移动通信网网号 ^16[4-7]d{8}$
    11 170~178 11 公众移动通信网网号 ^17[0-8]d{8}$
    12 174 11 公众移动通信网网号,卫星移动通信业务专用号段 ^174d{8}$
    13 18X 11 公众移动通信网网号 ^18d{9}$
    14 19X 11 公众移动通信网网号 ^19d{9}$

    标记为公众移动通信网网号的为运营商可以使用的、用于个人通讯业务的号段。
    开放的号段并非全部都已使用,只是指运营商可以在其内开展、经营业务。

    移动

    序号运营商号码长度备注正则规则
    1 中国移动 134~139 11 公众移动通信网网号,1349除外 ^13(4[0-8]d{7}|[5-9]d{8})$
    2 中国移动 147 11 公众移动通信网网号,TD数据卡专用 ^147d{8}$
    3 中国移动 150~152 11 公众移动通信网网号 ^15[0-2]d{8}$
    4 中国移动 157~159 11 公众移动通信网网号 ^15[7-9]d{8}$
    5 中国移动 172 11 公众移动通信网网号,2014新增 ^172d{8}$
    5 中国移动 178 11 公众移动通信网网号,2014新增 ^178d{8}$
    6 中国移动 182~184 11 公众移动通信网网号 ^18[2-4]d{8}$
    7 中国移动 187~188 11 公众移动通信网网号,188TD专用 ^18[7-8]d{8}$
    8 中国移动 198 11 公众移动通信网网号 ^198d{8}$

    联通

    序号运营商号码长度备注正则规则
    1 中国联通 130~132 11 公众移动通信网网号 ^13[0-2]d{8}$
    2 中国联通 145~146 11 公众移动通信网网号,145TD数据卡专用 ^14[5-6]d{8}$
    3 中国联通 155~156 11 公众移动通信网网号 ^15[5-6]d{8}$
    4 中国联通 166 11 公众移动通信网网号 ^166d{8}$
    5 中国联通 175~176 11 公众移动通信网网号 ^17[5-6]d{8}$
    6 中国联通 185~186 11 公众移动通信网网号 ^18[5-6]d{8}$

    电信

    序号运营商号码长度备注正则规则
    1 中国电信 133 11 公众移动通信网网号 ^133d{8}$
    2 中国电信 149 11 公众移动通信网网号 ^149d{8}$
    3 中国电信 153 11 公众移动通信网网号 ^153d{8}$
    4 中国电信 173 11 公众移动通信网网号 ^173d{8}$
    5 中国电信 177 11 公众移动通信网网号 ^177d{8}$
    6 中国电信 180 11 公众移动通信网网号 ^180d{8}$
    7 中国电信 181 11 公众移动通信网网号 ^181d{8}$
    8 中国电信 189 11 公众移动通信网网号 ^189d{8}$
    9 中国电信 191 11 公众移动通信网网号 ^191d{8}$
    10 中国电信 199 11 公众移动通信网网号 ^199d{8}$

    综合匹配正则

    ^1((34[0-8]d{7})|((3[0-3|5-9])|(4[5-7|9])|(5[0-3|5-9])|(66)|(7[2-3|5-8])|(8[0-9])|(9[1|8|9]))d{8})$

    上述正则有能力优化的同学请留下你的作业o(*^@^*)o

    示例

    // PHP 正则校验手机号合法性
    function check_phone_num($phone_num) {
        if (preg_match("/^1((34[0-8]d{7})|((3[0-3|5-9])|(4[5-7|9])|(5[0-3|5-9])|(66)|(7[2-3|5-8])|(8[0-9])|(9[1|8|9]))d{8})$/", $phone_num)) {
            echo "合法
    ";
        } else {
            echo "不合法
    ";
        }
    }
    
    // 测试
    check_phone_num(1589890023); //不合法
    check_phone_num(13492787590); //不合法
    check_phone_num(17612343210); //合法
    check_phone_num(16199008987); //不合法
    check_phone_num(17099008987); //不合法
    

    提示

    1. 严格意义上来讲,类似这种/^1[34578]d{9}$/写法是不够严谨的,可能造成后续短信验证号码为空的情况,从而丧失获取手机号的作用;
    2. 根据需求需要对一些特别号段,比如上述号段在匹配时,我们不允许卫星电话号段注册;
    3. 需要关注工信部相关的新闻,及时更新匹配规则。

    勘误

    欢迎各位发现数据存在问题的同学及时评论勘误!


    数据来源:

    1. 电信网编号计划(2017年版)
    2. 百度知道-184号段是中国移动的吗?
    3. 百度知道-目前中国联通的号段有哪些
    4. 百度知道-中国电信号码段都有哪些

    转自:https://blog.csdn.net/Chinakeep/article/details/106093218?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/nxmxl/p/13686711.html
Copyright © 2011-2022 走看看