首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 手機號碼驗證:正則表達式實作與常見號段支援

     編輯:Java 相關知識

需求背景

表單驗證、註冊流程、短信發送前檢核等場景,皆需確認使用者輸入的手機號碼格式正確。中國大陸手機號碼為 11 位數字,開頭號段隨運營商政策持續擴展。

核心正則表達式

^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$

解析

  • ^ $:全字串比對
  • 13[0-9]:130-139 全段
  • 15[^4,\\D]:150-159 排除 154 及非數字(舊寫法,現 154 已開放)
  • 18[0,5-9]:180、185-189
  • \\d{8}:後續 8 位任意數字

完整工具方法

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class MobileValidator {
    // 建議定期更新號段
    private static final Pattern MOBILE_PATTERN = Pattern.compile(
        "^(13\\d|14[0-9]|15\\d|16\\d|17\\d|18\\d|19\\d)\\d{8}$"
    );

    public static boolean isMobileNO(String mobile) {
        if (mobile == null || mobile.length() != 11) return false;
        Matcher m = MOBILE_PATTERN.matcher(mobile);
        return m.matches();
    }

    public static void main(String[] args) {
        String[] tests = {"13800138000", "15412345678", "19988889999", "12345678901", "1380013800"};
        for (String s : tests) {
            System.out.printf("%s -> %b%n", s, isMobileNO(s));
        }
    }
}

執行結果

13800138000 -> true
15412345678 -> true
19988889999 -> true
12345678901 -> false
1380013800 -> false

維護建議

  1. 工信部定期公佈新號段,建議將正則集中管理於設定檔或資料庫,避免硬編碼。
  2. 生產環境可整合第三方號碼歸屬地查詢 API,進一步驗證號碼真實性。
  3. 前端同步驗證可減少後端壓力,但後端必須再次驗證(防繞過)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved