土薯工具 Toolshu.com 登錄 用戶注冊

開發者最常用的20個正則表達式速查手冊

原創 作者:bhnw 於 2026-04-05 10:44 發佈 14次瀏覽 收藏 (0)

寫在前面

正則表達式是開發者繞不開的工具,但很少有人會把所有語法背下來。更實用的做法是:理解核心語法,遇到具體場景直接查現成的模式

本文整理了開發中最高頻出現的 20 個正則表達式,每條附上模式說明和示例,可以直接複製使用。文末附在線驗證工具入口,方便調試。


基礎語法速覽

在看具體模式之前,先確認幾個最常用的元字符:

符號 含義
. 匹配任意單個字符(換行除外)
* 前一個字符重複 0 次或多次
+ 前一個字符重複 1 次或多次
? 前一個字符重複 0 次或 1 次
^ 匹配字符串開頭
$ 匹配字符串結尾
\d 匹配數字,等價於 [0-9]
\w 匹配字母、數字、下劃線
\s 匹配空白字符
{n,m} 重複 n 到 m 次
[abc] 匹配括號內任意一個字符
(a|b) 匹配 a 或 b

一、用戶信息類

1. 郵箱地址

^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$

說明: 匹配標準郵箱格式。本地部分允許字母、數字和 ._%+-,域名部分要求有點號分隔,頂級域名至少2位。

示例匹配: user@example.comhello.world+tag@sub.domain.org


2. 中國大陸手機號

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

說明: 匹配以 1 開頭、第二位爲 3-9 的 11 位手機號,覆蓋目前所有運營商號段。

示例匹配: 1381234567819911112222


3. 座機號碼(含區號)

^(0\d{2,3})[\-\s]?(\d{7,8})$

說明: 匹配帶區號的座機,區號 3-4 位,號碼 7-8 位,中間可有連字符或空格。

示例匹配: 010-123456780571 87654321


4. 中國身份證號(18位)

^[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]$

說明: 匹配18位身份證。包含省份代碼、出生年份(18xx/19xx/20xx)、月份、日期校驗,末位允許 X。注意這隻做格式校驗,不做校驗位計算。


5. 用戶名(字母數字下劃線)

^[a-zA-Z0-9_]{4,16}$

說明: 常見註冊場景,4-16位,只允許字母、數字、下劃線。可根據需求調整長度區間。


6. 強密碼

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$

說明: 至少8位,必須包含小寫字母、大寫字母、數字、特殊字符各至少一個。使用了前瞻斷言 (?=...)


二、網絡地址類

7. URL

^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$

說明: 匹配 http 和 https 鏈接,包含路徑、查詢參數、錨點等完整 URL 結構。

示例匹配: https://toolshu.com/regex-visualizerhttp://sub.example.com/path?q=1


8. IPv4 地址

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

說明: 精確匹配 0.0.0.0 到 255.255.255.255 範圍內的 IPv4 地址。

示例匹配: 192.168.1.1255.255.255.0


9. IPv6 地址(簡化版)

^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

說明: 匹配完整展開的 IPv6 地址(不含縮寫形式)。生產環境建議使用更完整的版本。


10. 域名

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$

說明: 匹配標準域名,支持多級子域名,每段最長63字符。


三、日期時間類

11. 日期(YYYY-MM-DD)

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

說明: 匹配標準 ISO 日期格式,對月份和日期範圍做了約束,但不校驗具體月份天數(如2月30日能通過)。

示例匹配: 2024-01-312000-12-01


12. 時間(HH:MM:SS)

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

說明: 匹配 24 小時制時間,小時 00-23,分鐘秒鐘 00-59。


13. 中文日期(YYYY年MM月DD日)

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

示例匹配: 2024年3月15日2000年12月01日


四、內容格式類

14. 整數(含負數)

^-?[1-9]\d*$|^0$

說明: 匹配整數,允許負號,但不允許前導零(01 不匹配)。0 單獨處理。


15. 小數(含負數)

^-?([1-9]\d*|0)\.\d+$

說明: 匹配帶小數點的數字,小數點後必須有數字。不匹配 1.(末尾有點沒有數字)。


16. 中文字符

^[\u4e00-\u9fa5]+$

說明: 匹配純漢字字符串,Unicode 範圍覆蓋常用漢字。


17. 空行

^\s*$

說明: 匹配只含空白字符或完全爲空的行,常用於清理文本時過濾空行。


18. HTML 標籤

<([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>(.*?)<\/\1>

說明: 匹配成對的 HTML 標籤及其內容。注意:用正則解析複雜 HTML 並不可靠,複雜場景建議用 DOM 解析器。


19. 十六進制顏色值

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

說明: 匹配 CSS 顏色值,支持3位和6位簡寫。

示例匹配: #FF5733#fff


20. 中國郵政編碼

^[1-9]\d{5}$

說明: 匹配6位數字郵政編碼,首位不爲0。


使用這些正則時的注意事項

1. 不同語言的語法差異

各語言對正則的支持略有不同。JavaScript 不支持 lookbehind(舊版),Python 的 re 模塊默認不支持原子組。複製正則後建議在目標語言環境裏驗證。

2. 轉義問題

在字符串中寫正則時,反斜槓需要雙寫。比如 \d 在 Python 字符串裏要寫成 '\\d',或使用原始字符串 r'\d'

3. 格式校驗 ≠ 數據合法

正則只能做格式層面的校驗。身份證末位校驗碼、郵箱域名是否真實存在、手機號是否在網,都需要額外的邏輯處理。


在線驗證

調試或驗證這些正則時,可以使用 toolshu.com 提供的兩個工具:

兩個工具均在瀏覽器本地運行,無需登錄。

发现周边 发现周边
評論區

加載中...