Android 正则表达式验证手机号(限中国大陆三大运营商,更新日期截至 2019.9.12)

        更新于 - 2019.9.12

        直入正题,经过我在工信部和三大运营商官网查找,得到下面正则验证方式:

 

public class RegexCheck {

    /**
     * 截止 12/9/19,三大网络运营商在大陆号段分配:
     * 移动:134,135,136,137,138,139,144,147,148,150,151,152,157,158,159,172,178,182,183,184,187,188,198;
     * 联通:130,131,132,145,146,155,156,166,167,175,176,185,186;
     * 电信:133,149,153,173,174,177,180,181,189,191,199;
     * 虚拟运营商:170,171;
     *
     * 数据来源工信部网址:http://www.miit.gov.cn/Searchweb/news.jsp (网页中搜索:《电信网码号资源使用证书》颁发结果)
     *
     * 大陆手机号码11位数,再结合以上运营商支持号段,得出匹配格式:前三位固定格式 + 后8位任意数,
     * 此方法中前三位格式有:
     * 13 + (0-9之间任意数)
     * 14 + (4/5/6/7/8/9)
     * 15 + (0-9之间除4之外任意数)
     * 16 + (6/7)
     * 17 + (0-9之间除9之外任意数)
     * 18 + (0-9之间任意数)
     * 19 + (1/8/9)
     */
    public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {
        String regExp = "^((13[0-9])|(14[4-9])|(15[^4])|(16[6-7])|(17[^9])|(18[0-9])|(19[1|8|9]))\\d{8}$";
        Pattern p = Pattern.compile(regExp);
        Matcher m = p.matcher(str);
        return m.matches();
    }
}

需要注意:

【1】工信部一直在更新可用手机号段,如果想要获取更全的手机信息,可以去工信部(或者三大运营商官网)查看。

查看方式:工信部网址:http://www.miit.gov.cn/Searchweb/news.jsp (网页中搜索:《电信网码号资源使用证书》颁发结果)

【2】如上代码所示,在移动端(也即前端)去进行正则验证手机号码的方式不可靠。因为如【1】条所说,工信部在一直更新可用的手机号段,而我们的应用使用了硬编码的方式进行校验,如果应用发版后,工信部(或者三大运营商)更新了自己的手机号段,那我们的应用规则对这些新手机用户就不太友好了(一般会导致手机注册账号失败)。

所以最好的方式是给后台去做号码校验,我们只是校验用户输入的是不是十一位的数字,本地校验通过后,再调用后台接口对号码的合法性做正则检测,毕竟后台数据随时可配置更新。

【3】在不是很严格的情况下,一般我们都会本地做正则校验。。这种情况下,手机号段又会一直更新,需要我们随时更新正则校验方法,所以我们学习一下正则表达式还是很有必要的。

 

参考:

https://blog.csdn.net/u011415782/article/details/85601655

 

如果找到了你需要的,可不可以评论一下下~

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值