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

  • 相关阅读:
    进程状态
    VMware虚拟机的三种联网方法及原理
    关于C++迭代器失效
    头文件:limits.h、float.h
    正则表达式之一:元符号
    MYSQL之批量插入数据库
    PHP之如何判断数字(数字字符串不算)
    使用Process Monitor来得到程序运行参数
    Abusing the C preprocessor
    1+1还是1+1=2?
  • 原文地址:https://www.cnblogs.com/nxmxl/p/13686711.html
Copyright © 2011-2022 走看看