正規表示式速查表與視覺化工具
快速掌握正規表示式符號,把一個樣式拆成通俗易懂的部分,並用你自己的文字測試。全部在瀏覽器中執行。
速查表
. 換行以外的任意一個字元 範例: a.c\d 一個數字 (0-9) 範例: \d+\D 非數字的任意字元 範例: \D+\w 一個單字字元 (a-z, A-Z, 0-9, _) 範例: \w+\W 非單字字元的任意字元 範例: \W+\s 一個空白字元 範例: \s+\S 非空白的任意字元 範例: \S+^ 文字開頭 範例: ^hello$ 文字結尾 範例: world$\b 一個單字邊界 範例: \bword\b\B 不是單字邊界的位置 範例: \Bword\B[abc] 字元集合 範例: [abc]+[^abc] 取反的字元集合 範例: [^abc]+[a-z] 字元集合 範例: [a-z0-9]+(abc) 擷取群組 範例: (abc)(?:abc) 非擷取群組 範例: (?:abc)+(?<n>) 具名群組 範例: (?<year>\d{4})\1 反向參照 範例: (\w)\1a|b 擇一 範例: cat|dog? 可選(0 或 1) 範例: colou?r* 重複 0 次或以上 範例: a*+ 重複 1 次或以上 範例: a+{m,n} 重複指定的次數 範例: a{2,4}+? 同樣的意思,但盡可能短 範例: <.+?>(?=) 僅當後面跟著 範例: foo(?=bar)(?!) 僅當後面不跟著 範例: foo(?!bar)(?<=) 僅當前面是 範例: (?<=\$)\d+(?<!) 僅當前面不是 範例: (?<!\$)\d+\. 把下一個字元當作字面字元 範例: 3\.14\n 一個換行 範例: line\n\t 一個定位字元 範例: \tindented常用驗證樣式
| 用途 | 樣式 | 說明 | 符合範例 |
|---|---|---|---|
| 電子郵件位址 | ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$ | 驗證電子郵件位址的常見形式。 | user@example.com |
| 電話號碼(美國) | ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ | 比對十位號碼,帶或不帶連字號、空格、括號皆可。 | 123-456-7890 |
| 郵遞區號(美國) | ^\d{5}(-\d{4})?$ | 比對五位與九位的郵遞區號。 | 90210-1234 |
| 日期 (YYYY-MM-DD) | ^\d{4}-\d{2}-\d{2}$ | 比對簡單的純數字日期格式。 | 2026-09-16 |
| IP 位址 (IPv4) | ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ | 比對 IPv4 位址的形式,但不檢查每一段是否在 0 到 255 之間。 | 192.168.1.1 |
這些樣式檢查的是值的形式,而不是它是否真的存在。一個位址可以完全符合郵件樣式卻依然寄不出去,所以用它們盡早發現拼字錯誤,絕不要當作唯一的驗證。
這個工具提供什麼
一份精簡的正規表示式符號參考、一種把樣式翻成日常句子的拆解,以及一個能顯示樣式在你自己文字中比對到什麼的測試器。
什麼時候用
寫樣式時用,讀別人寫的樣式時用,向同事講解正規表示式基礎時也用。把樣式一段一段唸出來,往往就是讓人豁然開朗的那一步。
限制
拆解依循 JavaScript 的正規表示式,因為那正是瀏覽器所執行的。其他方言有所不同:PCRE、Python、Java 與 .NET 各自加了自己的語法,而 grep、sed 等 POSIX 工具使用的是更舊、更小的語法。測試器會在獨立的執行緒中執行你的樣式,幾秒後就停止,因此無限回溯的樣式無法讓頁面卡死。
如何使用速查表
搜尋一個符號,或貼上一個樣式,逐段閱讀。
- 瀏覽或搜尋符號清單。
- 貼上一個樣式,看它被拆成哪些段。
- 輸入範例文字,看清真正比對到什麼,再調整樣式。
常見問題
這個工具會上傳我的樣式嗎?
不會。拆解與比對都在你的瀏覽器中進行,樣式與文字都不會傳送到任何地方。
它依循哪一種正規表示式方言?
JavaScript 的方言,因為做事的正是這個引擎。這裡絕大部分的內容——字元類別、群組、量詞、錨點——在各方言中都是一樣的。
我可以在這裡測試我的樣式嗎?
可以。在測試框中輸入文字,符合處會被標示出來,並列出每一處擷取到的群組。
我的樣式為什麼被中止了?
有些樣式遇到幾乎能符合的文字時會花費指數級的時間,常見原因是量詞套量詞,例如 (a+)+b。測試器幾秒後就放棄,而不是讓頁面卡死;這次中斷本身就是一個有用的警訊:同樣的樣式會把伺服器拖垮。
Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking