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

最全常用正則表達式大全:數字、字符、郵箱、手機、身份證、URL、金額一網打盡

     編輯:Java 綜合教學

最全常用正則表達式大全:數字、字符、郵箱、手機、身份證、URL、金額一網打盡

正則表達式是文本處理的瑞士軍刀。本文整理了開發中最高頻的驗證場景,按「數字驗證、字符驗證、特殊需求」三大類分類,附帶 Java/JS 通用寫法與邊界說明,建議收藏備查。

一、數字驗證表達式

場景正則表達式說明
純數字^[0-9]*$包含空串
n 位數字^\d{n}$固定長度
至少 n 位^\d{n,}$
m-n 位^\d{m,n}$
非零開頭整數^[1-9]\d*$不含 0
非零開頭,最多兩位小數^([1-9]\d*)+(\.\d{1,2})?$金額常用
帶 1-2 位小數的正負數^(\-)?\d+(\.\d{1,2})?$
正浮點數^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$排除 0.0
負浮點數^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
通用浮點數^(-?\d+)(\.\d+)?$含整數

二、字符驗證表達式

場景正則表達式說明
漢字^[\u4e00-\u9fa5]{0,}$Unicode 範圍
英文+數字^[A-Za-z0-9]+$
長度 3-20 任意字符^.{3,20}$
26 字母^[A-Za-z]+$
大寫字母^[A-Z]+$
小寫字母^[a-z]+$
數字+字母+下劃線^\w+$ 或 ^\w{3,20}$\w = [A-Za-z0-9_]
中英數+下劃線^[\u4E00-\u9FA5A-Za-z0-9_]+$
中英數(無符號)^[\u4E00-\u9FA5A-Za-z0-9]+$

三、特殊需求表達式(高頻業務場景)

場景正則表達式備註
Email^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$RFC 5322 簡化版
域名[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
URL^https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$支援 http/https
手機號(中國大陸)^(13[0-9]|14[57]|15[0-35-9]|18[0-9])\d{8}$含新號段
電話號碼^(\d{3,4}-)?\d{7,8}$含區號
國內電話\d{3}-\d{8}|\d{4}-\d{7}0511-4405222
身份證(15/18位)^\d{15}|\d{18}$不驗證校驗碼
短身份證(含X)^[0-9]{7,18}(x|X)?$
賬號合法性^[a-zA-Z][a-zA-Z0-9_]{4,15}$字母開頭 5-16 字節
密碼(字母開頭,6-18位)^[a-zA-Z]\w{5,17}$字母數字下劃線
強密碼(大小寫+數字,8-10位)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$零寬斷言
日期(YYYY-MM-DD)^\d{4}-\d{1,2}-\d{1,2}$不驗證合法性
月份(01-12)^(0?[1-9]|1[0-2])$
日期(01-31)^((0?[1-9])|((1|2)[0-9])|30|31)$

四、金額格式驗證(遞進式設計)

從簡單到嚴謹,最終推薦生產可用版本:

  1. ^[1-9][0-9]*$ —— 僅正整數,拒絕 0
  2. ^(0|[1-9][0-9]*)$ —— 允許 0
  3. ^(0|-?[1-9][0-9]*)$ —— 允許負號(金額通常不需要)
  4. ^[0-9]+(\.[0-9]+)?$ —— 允許小數,但 10. 不通過
  5. ^[0-9]+(\.[0-9]{2})?$ —— 強制兩位小數
  6. ^[0-9]+(\.[0-9]{1,2})?$ —— 允許 1-2 位小數
  7. ^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ —— 支持千分位逗號
  8. 最終推薦:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$ —— 兼容無逗號、有逗號、整數、小數

五、其他實用表達式

  • XML 文件名:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[xX][mM][lL]$
  • 中文字符:[\u4e00-\u9fa5]
  • 雙字節字符:[^\x00-\xff](含漢字,計算長度時雙字節算 2)
  • 空白行:\n\s*\r(可用於刪除空行)
  • HTML 標籤:<(\S*?)[^>]*>.*?</\1>|<.*? />(僅能處理簡單嵌套)
  • 首尾空白:^\s*|\s*$(trim 利器)
  • 騰訊 QQ 號:[1-9][0-9]{4,}(從 10000 起)
  • 郵政編碼:[1-9]\d{5}(?!\d)(6 位數字)
  • IPv4 地址:((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)

六、前端常用驗證速查(RegularExpressionValidator)

驗證項表達式
只能輸入數字^[0-9]*$
只能輸入 n 位數字^\d{n}$
只能輸入至少 n 位^\d{n,}$
只能輸入 m-n 位^\d{m,n}$
兩位小數正實數^[0-9]+(\.[0-9]{2})?$
1-3 位小數正實數^[0-9]+(\.[0-9]{1,3})?$
非零正整數^\+?[1-9][0-9]*$
非零負整數^-[1-9][0-9]*$
長度 3 字符^.{3}$
26 英文字母^[A-Za-z]+$
密碼驗證^[a-zA-Z]\w{5,17}$
含特殊字符[^%&',;=?$\x22]+
只能輸入漢字^[\u4e00-\u9fa5]{0,}$

七、JavaScript 實用片段

// 1. 計算字符串長度(雙字節算 2)
String.prototype.len = function() {
    return this.replace(/[^\x00-\xff]/g, "aa").length;
};

// 2. trim 實現
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
};

// 3. IP 轉長整型
function IP2V(ip) {
    var re = /(\d+)\.(\d+)\.(\d+)\.(\d+)/g;
    if (re.test(ip)) {
        return RegExp.$1 * Math.pow(255,3) + RegExp.$2 * Math.pow(255,2) + RegExp.$3 * 255 + RegExp.$4 * 1;
    }
    throw new Error("Not a valid IP address!");
}

// 4. 從 URL 提取文件名
var s = "https://www.example.com/page1.htm";
s = s.replace(/(.*\/){0,}([^\.]+).*/ig, "$2"); // page1.htm

// 5. 限制輸入框只能輸入中文
// onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
// onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

使用提示

  • Java 中字符串雙重轉義:\\d、\\.、\\\\。
  • JS 中直接寫 \d、\.、\\。
  • 邊界錨點 ^ $ 必加,防止部分匹配繞過驗證。
  • 複雜嵌套 HTML 請用解析器(如 Jsoup),正則無法完美處理遞歸結構。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved