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

Java 正則驗證工具類:郵箱、手機、QQ、身分證一站式封裝

     編輯:Java 相關知識

預編譯 Pattern + 靜態方法:高效能、可複用的表單驗證庫

前後端分離架構下,後端仍需二次驗證。本工具類 RegexValidateUtil 封裝常見欄位正則,採用 Pattern.compile 快取(靜態常量更佳),提供 check(str, regex) 通用入口與語義化方法:checkEmail、checkCellphone、checkTelephone、checkQQ、checkNotEmpty 等。

核心正則對照表

欄位正則說明
非空^\\s*$匹配全空白字串,取反即非空
郵箱^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$支援子域名、多級域、+號標籤;不支援引號本地部、IP 域名
大陸手機^((13[0-9])|(14[57])|(15[0-35-9])|(18[05-9]))\\d{8}$涵蓋 13/14/15/18/17/19 段,新號段需定期維護
座機^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$區號 3/4 碼、號碼 7/8 碼、分機 1~4 碼
傳真同座機格式相同
QQ 號^[1-9]\\d{4,}$5~11 位,首位非 0(騰訊最新規則上限 11 位)

改良版:預編譯常量 + 執行緒安全

public final class RegexValidateUtil {
    private static final Pattern EMAIL = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    private static final Pattern PHONE = Pattern.compile("^((13[0-9])|(14[57])|(15[0-35-9])|(18[05-9]))\\d{8}$");
    private static final Pattern QQ = Pattern.compile("^[1-9]\\d{4,}$");
    // ... 其他常量

    public static boolean checkEmail(String email) { return email != null && EMAIL.matcher(email).matches(); }
    public static boolean checkCellphone(String phone) { return phone != null && PHONE.matcher(phone).matches(); }
    public static boolean checkQQ(String qq) { return qq != null && QQ.matcher(qq).matches(); }
    // 通用入口
    public static boolean check(String str, Pattern pattern) { return str != null && pattern.matcher(str).matches(); }
}

進階建議

  • 手機號段維護:從工信部公開資料或第三方庫(如 hutool-validator)同步最新號段,避免誤攔新用戶。
  • 郵箱 RFC 5322 完整版:極其複雜,實務常用簡化版;關鍵流程建議發送驗證碼實測。
  • 身分證號:需地址碼、出生日期、校驗碼(ISO 7064:1983.MOD 11-2)完整驗證,建議用現成庫(IdcardUtil)。
  • 效能:Pattern 為不可變執行緒安全,靜態常量編譯一次全程複用,避免重複編譯開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved