Java最全手機號碼校驗工具類,方便擴展

支持校驗中國大陸的全部手機號碼
支持單獨校驗中國電信號段手機號碼
支持單獨校驗中國聯通號段手機號碼
支持單獨校驗中國移動號段手機號碼

具體代碼可直接到GitHub拉取源代碼:https://github.com/bj4096/common-utils

如有更好的建議歡迎大家隨時提交,共同完善

另外方便隨時增加不同運營商新出的號段,廢話不多說,直接上代碼:

package com.sljl.core.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

/**
 * 手機號校驗工具類
 *
 * @author L.Y.F
 */
public class MobileUtil {

    /**
     * 中國電信號碼格式驗證 手機段: 133,149,153,173,177,180,181,189,199,1349,1410,1700,1701,1702
     **/
    private static final String CHINA_TELECOM_PATTERN = "(?:^(?:\\+86)?1(?:33|49|53|7[37]|8[019]|99)\\d{8}$)|(?:^(?:\\+86)?1349\\d{7}$)|(?:^(?:\\+86)?1410\\d{7}$)|(?:^(?:\\+86)?170[0-2]\\d{7}$)";

    /**
     * 中國聯通號碼格式驗證 手機段:130,131,132,145,146,155,156,166,171,175,176,185,186,1704,1707,1708,1709
     **/
    private static final String CHINA_UNICOM_PATTERN = "(?:^(?:\\+86)?1(?:3[0-2]|4[56]|5[56]|66|7[156]|8[56])\\d{8}$)|(?:^(?:\\+86)?170[47-9]\\d{7}$)";

    /**
     * 中國移動號碼格式驗證
     * 手機段:134,135,136,137,138,139,147,148,150,151,152,157,158,159,178,182,183,184,187,188,198,1440,1703,1705,1706
     **/
    private static final String CHINA_MOBILE_PATTERN = "(?:^(?:\\+86)?1(?:3[4-9]|4[78]|5[0-27-9]|78|8[2-478]|98)\\d{8}$)|(?:^(?:\\+86)?1440\\d{7}$)|(?:^(?:\\+86)?170[356]\\d{7}$)";

    /**
     * 中國大陸手機號碼校驗
     *
     * @param phone
     *
     * @return
     */
    public static boolean checkPhone(String phone) {
        if (StringUtils.isNotBlank(phone)) {
            if (checkChinaMobile(phone) || checkChinaUnicom(phone) || checkChinaTelecom(phone)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 中國移動手機號碼校驗
     *
     * @param phone
     *
     * @return
     */
    public static boolean checkChinaMobile(String phone) {
        if (StringUtils.isNotBlank(phone)) {
            Pattern regexp = Pattern.compile(CHINA_MOBILE_PATTERN);
            if (regexp.matcher(phone).matches()) {
                return true;
            }
        }
        return false;
    }

    /**
     * 中國聯通手機號碼校驗
     *
     * @param phone
     *
     * @return
     */
    public static boolean checkChinaUnicom(String phone) {
        if (StringUtils.isNotBlank(phone)) {
            Pattern regexp = Pattern.compile(CHINA_UNICOM_PATTERN);
            if (regexp.matcher(phone).matches()) {
                return true;
            }
        }
        return false;
    }

    /**
     * 中國電信手機號碼校驗
     *
     * @param phone
     *
     * @return
     */
    public static boolean checkChinaTelecom(String phone) {
        if (StringUtils.isNotBlank(phone)) {
            Pattern regexp = Pattern.compile(CHINA_TELECOM_PATTERN);
            if (regexp.matcher(phone).matches()) {
                return true;
            }
        }
        return false;
    }

    /**
     * 隱藏手機號中間四位
     *
     * @param phone
     *
     * @return java.lang.String
     */
    public static String hideMiddleMobile(String phone) {
        if (StringUtils.isNotBlank(phone)) {
            phone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        }
        return phone;
    }

    public static void main(String[] args) {
        System.out.println(checkPhone("19800000001"));
    }

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,908評論 0 5
  • 遠山隱匿眉頭, 綽綽風姿婉約。 蟬鳴, 流水, 落花, 盡憶流年。 戀月圓, 留花香, 意知趣, 憶流年。
    微言一顧閱讀 154評論 0 1
  • 愛一個人就會心疼一個人,而心疼一個人,就會甘愿為之付出一切,哪怕只是遠遠地凝望,默默的守候,都無怨無悔,這就是為什...
    小妖貝兒閱讀 224評論 2 2
  • 既然身后空無一人。
    張意志SMG閱讀 176評論 0 0
  • 第 80 章 陰差陽錯 第三部 李建成(之三十四) 田里的...
    鐵馬老言閱讀 213評論 0 3