关于Java手机号验证

最近使用到Java中手机号验证,一直从网上找发现很多要么比较简单,要么一些手机号验证的不太好,想着自己也试着通过正则表达式写一个,所以花了一些时间查阅现在都有哪些号段,不看不知道一看吓一跳,各种号段眼花缭乱,在这先姑且只做到验证手机号前三位到第四位是不是符合规则,是否是11位,而至于根据第几位作为区号这些的格式验证先不做,因为具体一个号码怎么生成的规则并不清楚,只验证前三位到四位,发布是想给自己留个地方能够自己看,同是也希望做过比较完整的手机号验证的多多告诉小弟是怎么做的,做的不好也请指正,毕竟第一次整这个

package com.cjy.utils;

import java.util.regex.Pattern;

/**
 * @作者 : CJY
 * @说明 : 用于后台邮箱、手机号等的验证工具类
 * @时间 : 2017/11/28 14:09
 */
public class ValidateUtils {
    /**
     * CJYFIXME搜集号段时间:2017-11-28(这个之后的请自行添加)
     * 手机号:目前全国有27种手机号段。
     * 移动有19个号段:134(0-8)、135、136、137、138、139、147(147(数据卡))、148(物联网)、150、151、152、157、158、159、178、182、183、184、187、188、198。
     * 联通有11种号段:130、131、132、--145(数据卡)--、146(物联网)、155、156、166、171、175、176、185、186。
     * 电信有7个号段:133、--1349--、149、153、173、177、180、181、189、199。
     * 虚拟运营商:
     * (1).移动:1703、1705、1706
     * (2).联通:1704、1707、1708、1709、171
     * (3).电信:1700、1701、1702
     * 卫星通信:1349
     * <p>
     * 工业和信息化部公示了2017年第10批“电信网码号资源使用证书”颁发结果,批准同意部分单位提出的电信网码号资源有关申请,
     * 其中三大运营商均获得相关物联网号段。
     * 移动:
     * (1).198(0-9)号段(公众移动通信网号)
     * (2).148(0-9)号段(物联网业务专用号段)
     * (3).1440(0-9)号段(物联网网号)
     * (4).(460)13(移动网络识别码)
     * 联通:
     * (1).166(0-9)号段(公众移动通信网号)
     * (2).146(0-9)号段(物联网业务专用号段)
     * 电信:
     * (1).1740(0-5)号段(卫星移动通信业务号)、
     * (2).199(0-9)号段(公众移动通信网号)、
     * (3).1410(0-9)号段(物联网网号)、
     * (4).(460)59(移动网络识别码)
     * 由于物联网号段一般用在家用家具上,所以这里不考虑物联网号段,物联网号码的总位数是13或者14还没搞清楚
     * ===============================================================================================
     * 总结一下:虚拟运营商、数据卡、物联网、卫星通信、移动网络识别码都不作为正常使用的电话号码,所以需要验证的手机号如下:
     * 130、131、132、133、134(0-8)、135、136、137、138、139
     * 149
     * 150、151、152、153、155、156、157、158、159
     * 166、
     * 173、175、176、177、178、
     * 180、181、182、183、184、185、186、187、188、189
     * 198、199
     */
    private static final String REGEX_MOBILE = "(134[0-8]\\d{7})" +
                                                "|(" +
                                                    "((13([0-3]|[5-9]))" +
                                                        "|149" +
                                                        "|15([0-3]|[5-9])" +
                                                        "|166" +
                                                        "|17(3|[5-8])" +
                                                        "|18[0-9]" +
                                                        "|19[8-9]" +
                                                    ")" +
                                                "\\d{8}" +
                                                ")";

    /**
     * 判断是否是手机号
     * @param tel 手机号
     * @return boolean true:是  false:否
     */
    public static boolean isMobile(String tel) {
        return Pattern.matches(REGEX_MOBILE, tel);
    }
}

这个目前验证的手机号不是太多,如果不正确请在评论中指出,我会尽我所能修改
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值