java如何校验国际手机号格式

2025-09-28 12:41:22

1、[java] view plain copy

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 

     *  

     * 工业和信息化部公示了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);  

    }  

}  

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢