跳到正文
馬克工具箱

常用正規表示式大全

整理了開發中最常用的正規表示式:中國大陸手機號碼、身分證號、固定電話、郵編、車牌號、QQ 號,電子郵件、網址、網域、IP、MAC 地址,整數、小數、金額,日期、時間、使用者名稱、強密碼、顏色、UUID、版本號等。每條都附有說明和匹配、不匹配的例子,可以一鍵複製,也可以直接輸入內容測試。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

  • 電子郵件地址

    常見的電子郵件格式,允許點、加號和多級網域

    /^[\w.+-]+@[\w-]+(\.[\w-]+)+$/

    ✓ name@example.com a.b+tag@mail.co.uk✗ name@ @example.com a b@example.com

  • 網址(http/https)

    以 http:// 或 https:// 開頭、不含空格的網址

    /^https?:\/\/[^\s/$.?#][^\s]*$/i

    ✓ https://example.com/path?q=1 http://localhost:8080✗ ftp://example.com example.com https:// bad

  • 網域

    由字母、數字和連字元組成的多級網域

    /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/

    ✓ example.com sub.example.co.uk✗ -bad.com example exa_mple.com

  • IPv4 地址

    四段 0~255 的數字,不允許前導零

    /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/

    ✓ 192.168.1.1 8.8.8.8 255.255.255.0✗ 256.1.1.1 1.2.3 01.2.3.4

  • MAC 地址

    六組兩位十六進位制,用冒號或連字元分隔

    /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/

    ✓ 00:1A:2B:3C:4D:5E 00-1a-2b-3c-4d-5e✗ 001A2B3C4D5E 00:1A:2B:3C:4D

  • 手機號碼(中國大陸)

    11 位,以 13~19 開頭,不含 +86

    /^1[3-9]\d{9}$/

    ✓ 13800138000 19912345678✗ 12345678901 1380013800 +8613800138000

  • 固定電話

    區號加號碼,區號和號碼之間可以有連字元

    /^0\d{2,3}-?\d{7,8}$/

    ✓ 010-12345678 0755-1234567 02112345678✗ 12345678 010-123

  • 身分證號(18 位)

    校驗地區碼長度、出生日期格式,末位可以是 X;不校驗校驗碼

    /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/

    ✓ 11010519491231002X 440308199901010012✗ 11010519491331002X 1101051949123100

  • 郵政編碼

    6 位數字

    /^\d{6}$/

    ✓ 100000 010000✗ 10000 1000000

  • 車牌號

    普通車牌 7 位、新能源車牌 8 位,不含字母 I 和 O

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

    ✓ 京A12345 粤BD12345 沪A1234学✗ 京12345 京AI2345

  • 純中文

    只包含常用漢字

    /^[\u4e00-\u9fa5]+$/

    ✓ 中文 正则表达式✗ 中文abc

  • QQ 號

    5~11 位數字,不以 0 開頭

    /^[1-9]\d{4,10}$/

    ✓ 10001 123456789✗ 01234 1234

  • 銀行卡號

    16~19 位數字;是否有效還需要 Luhn 校驗

    /^[1-9]\d{15,18}$/

    ✓ 6222021234567890123 4111111111111111✗ 0222021234567890 622202123456

  • 整數

    可以帶負號

    /^-?\d+$/

    ✓ 0 -42 12345✗ 1.5 1e3

  • 正整數

    不以 0 開頭

    /^[1-9]\d*$/

    ✓ 1 100✗ 0 01 -1

  • 小數

    可以帶負號,小數點前後都要有數字

    /^-?\d+(?:\.\d+)?$/

    ✓ 3.14 -0.5 42✗ .5 1. 1,000

  • 金額

    非負數,最多兩位小數

    /^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/

    ✓ 0 99.9 1234.56✗ 01.00 1.234 -1

  • 日期(YYYY-MM-DD)

    月份 01~12、日期 01~31,不檢查大小月

    /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/

    ✓ 2026-09-26 1999-12-31✗ 2026-13-01 2026-9-26 26-09-2026

  • 時間(HH:MM[:SS])

    24 小時制,秒可省略

    /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/

    ✓ 09:30 23:59:59✗ 24:00 9:30 12:60

  • 使用者名稱

    字母開頭,4~16 位字母、數字或下劃線

    /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/

    ✓ alice_01 Bob2026✗ 1alice ab bad-name

  • 強密碼

    至少 8 位,同時包含大寫字母、小寫字母、數字和符號

    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$/

    ✓ Passw0rd! Aa1@aaaa✗ password Password1 Aa1@

  • 十六進位制顏色

    #RGB 或 #RRGGBB

    /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/

    ✓ #fff #0F766E✗ fff #ffff #12345g

  • UUID

    標準格式的 UUID(版本 1~8)

    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i

    ✓ 123e4567-e89b-42d3-a456-426614174000✗ 123e4567-e89b-42d3-c456-426614174000 123e4567e89b42d3a456426614174000

  • 語義化版本號

    主版本.次版本.修訂號,可帶預釋出和構建資訊

    /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/

    ✓ 1.0.0 2.1.3-beta.1+build.5✗ 1.0 01.0.0 v1.0.0

  • HTML 標籤對

    查詢成對的開始和結束標籤,捕獲標籤名和內容

    /<([a-zA-Z][\w-]*)\b[^>]*>([\s\S]*?)<\/\1>/g

    ✓ <b>bold</b> <a href="#">link</a>✗ <b>unclosed plain text

  • 空行

    配合 m 標誌查詢空行或只有空白的行,可用於刪除空行

    /^\s*$/m

    ✓ ✗ text

正則按 JavaScript 語法書寫,Java、Python、Go 等大多數語言也能直接使用(注意反斜槓轉義)。格式校驗只檢查寫法,身分證、銀行卡是否真實有效還需要校驗位或官方渠道驗證。

使用步驟

  1. 在搜尋框輸入要找的格式,或按分類篩選。
  2. 點「複製」拿到正則,在程式碼裡使用時注意反斜槓轉義。
  3. 在卡片下方的輸入框裡輸入內容,立即看到是否匹配。

引數說明

語法
按 JavaScript 語法書寫,Java、Python、Go、PHP 等語言基本通用;在字串裡使用時反斜槓需要寫成兩個。
整串匹配
校驗類正則都帶有 ^ 和 $,要求整個輸入符合格式;如果要在長文字里查詢,去掉 ^ 和 $ 並加 g 標誌。
格式與有效性
正則只檢查格式。身分證號、銀行卡號是否真實有效,還需要校驗位計算或官方渠道核實。

正則是怎麼構成的:以 IPv4 為例

IPv4 的正則展示了校驗類正則的常見結構。一段數字(octet)寫成四個按順序嘗試的分支,每個分支只接受 0–255 中的一部分:

25[0-5]      250–255
2[0-4]\d     200–249
1\d\d        100–199
[1-9]?\d     0–99, with no leading zero

整個正則是 (octet\.){3}octet,前後用 ^ 和 $ 錨定。所以 192.168.1.1 能匹配,而 256.1.1.1、01.2.3.4 和 1.2.3 不能。

格式正確不等於有效

正則只檢查寫法。日期的正則會接受 2026-02-30,因為它允許每個月都有 30 日;它會拒絕 2026-13-01,因為不存在 13 月。要檢驗真正的日期,請在正則檢查之後,用所用語言的日期庫來解析這個值。

常見問題

手機號碼正則需要經常更新嗎?

這裡用 1 開頭、第二位 3~9 的寬鬆寫法,能覆蓋現有和將來新增的號段,一般不需要更新。

為什麼電子郵件正則不是最嚴格的版本?

完全符合 RFC 5322 的正則非常複雜且容易誤傷。實際專案裡用寬鬆正則做初步檢查,再通過傳送驗證郵件確認。

怎麼除錯更復雜的正則?

用「正規表示式測試」工具,可以看到每個匹配和分組,還能測試替換。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具