驗證 email / URL 格式
在測試器建構 pattern,貼上樣本(包括正常的與邊界案例),確認實際 match 範圍後,再把它放進你的表單驗證。Preset 提供了一個能涵蓋 95% 真實輸入的合理起點。
建構與測試正規表達式 — 即時 match 標示、capture group 解析、replace 模式預覽。JavaScript 風格,完全在瀏覽器內運算。
JavaScript / ECMAScript regex(就是瀏覽器原生 RegExp 用的引擎)。它是 POSIX 的嚴格超集,常用功能也與 Python re、Java Pattern、PCRE 大量重疊。差異要注意:JavaScript 支援 lookahead/lookbehind、命名 group(/(?
不會。整個工具就是這個分頁裡的 JavaScript。Pattern 編譯、matching、replacement 全都用瀏覽器原生 RegExp 在本地執行。打開 DevTools → Network 觀察:輸入時不會發任何請求。可以放心貼上正式日誌、客戶 email、或任何不該被伺服器記錄的內容。
$1、$2 對應數字 capture group;$<name> 對應命名 group;$& 代表整個 match。
.
任一字元(預設不含換行;加 /s 旗標時也包含換行)
\d
任一數字(0-9)
\D
非數字
\w
Word 字元(a-z、A-Z、0-9、底線)
\W
非 word 字元
\s
空白字元(空格、tab、換行)
\S
非空白
\b
單字邊界
^ $
字串開頭 / 結尾(加 /m 旗標時對應行首 / 行尾)
*
前一元素出現 0 次或多次
+
前一元素出現 1 次或多次
?
前一元素出現 0 或 1 次(可選)
{n,m}
前一元素出現 n 到 m 次
(...)
Capture group — 結果存到 $1、$2…
(?:...)
非捕獲群組 — 用於分組但不捕獲
(?<n>...)
命名 capture group — 替換時用 $<n> 引用
[abc]
字元類別 — 任一個 a、b 或 c
[^abc]
否定字元類別 — 任一個非 a、b、c 的字元
a|b
或關係 — 匹配 a 或 b
(?=...)
正向先行斷言 — 後面跟著
(?!...)
否定先行斷言 — 後面不跟著
(?<=...)
正向後行斷言 — 前面是
(?<!...)
否定後行斷言 — 前面不是
$1 $<n>
替換字串裡的反向參照 — 數字或命名
為開發者打造的乾淨、快速 regex 遊樂場 — 沒有彈出廣告,也沒有第三方追蹤。
輸入 pattern 的同時,所有 match 即時在測試字串裡高亮顯示。Capture group 也會列在旁邊,清楚標出位置與內容。
切到 Replace 模式即時預覽 String.replace 的輸出,完整支援 $1/$2 數字反向參照、$
global、忽略大小寫、multiline、dotall、unicode、sticky 都做成晶片切換 — 與原生 RegExp 完全一致,複製到程式碼裡不會出意外。
Email、URL、IPv4、電話、日期、十六進位色碼、UUID 一鍵帶入,每個範例都附測試字串,讓你直接看到實際 match 範圍。
字元類別、量詞、錨點、群組、先行/後行斷言一覽 — 可摺疊,需要時打開,平常收起來不擋路。
Pattern、測試字串、替換字串都留在你的瀏覽器。可在 DevTools → Network 驗證:輸入時零網路請求。可放心測試正式日誌與客戶資料的 regex。
正規表達式看起來像亂碼,但它背後的引擎其實很單純。
當你寫下 /foo/,或呼叫 new RegExp('foo'),引擎會把 pattern 解析成一個內部自動機(automaton)— 一個能在輸入文字上行走的狀態機。編譯只發生一次,後續比對速度很快。
引擎在測試字串上移動游標。在每個位置嘗試走完自動機的路徑:符合的字元同時前進兩個游標,不符合就回溯到前一個分歧點換另一條路試。
Pattern 裡的括號開啟一個 capture group:當引擎在括號內成功比對時,會記住比對到的內容,索引為 $1、$2…。命名 group (?<n>...) 則用名稱儲存。這些 capture 出現在 match 物件的 groups 欄位。
String.replace(regex, replacement) 走相同的 match 路徑,但不是回傳結果,而是把替換字串拼進去。替換字串裡的 $1 就是 group 1 抓到的內容 — 用一條 regex 就能把 2024-01-15 改成 15/01/2024。
你會在哪些情境下需要 regex 測試器?
在測試器建構 pattern,貼上樣本(包括正常的與邊界案例),確認實際 match 範圍後,再把它放進你的表單驗證。Preset 提供了一個能涵蓋 95% 真實輸入的合理起點。
日誌裡混雜時間戳、ANSI 顏色碼、想遮蔽的 IP?切到 Replace 模式,用 \b(?:\d{1,3}\.){3}\d{1,3}\b 配上 [REDACTED],先看預覽再用 sed 跑真實檔案。
IDE 的 find-and-replace 雖然支援 regex,但不會跨多筆樣本即時預覽。先在 iKit 用真實程式片段建構並驗證,確認 group 與替換無誤後,再貼回 VS Code / IntelliJ。
想從聯絡人匯出檔抓出所有 email,或從收據裡抽出每筆金額?在 iKit 建好 regex,複製到一行 script(text.matchAll(re)),臨時的解析任務瞬間變成十行程式。
Regex pattern 經常隱含敏感資訊:客戶 ID 結構、內部 API 路徑、密碼規則、或你正在試圖遮蔽的 PII 欄位。把它們(以及搭配的真實測試資料)貼到別人的伺服器,等於同時洩漏 pattern 與輸入。iKit 的 regex 測試器只是已載入瀏覽器分頁的 JavaScript。
來自 iKit 部落格的深入教學與工具比較。
JSON parsing and regex extraction — when each one is the right tool for cleaning up ugly responses.
Regex patterns for spotting Base64 strings in the wild, and how Base64 differs from URL percent-encoding.
JavaScript / ECMAScript regex(就是瀏覽器原生 RegExp 用的引擎)。它是 POSIX 的嚴格超集,常用功能也與 Python re、Java Pattern、PCRE 大量重疊。差異要注意:JavaScript 支援 lookahead/lookbehind、命名 group(/(?
不會。整個工具就是這個分頁裡的 JavaScript。Pattern 編譯、matching、replacement 全都用瀏覽器原生 RegExp 在本地執行。打開 DevTools → Network 觀察:輸入時不會發任何請求。可以放心貼上正式日誌、客戶 email、或任何不該被伺服器記錄的內容。
兩者都是替換字串裡的反向參照。$1、$2… 對應 pattern 裡 capture group 的順序 — (foo)(bar) 會讓 $1 = 'foo'、$2 = 'bar'。$
Lookbehind (?<=...) 與 (?
打開 /u(unicode)旗標,然後在 pattern 裡使用 Unicode 屬性轉義。`\p{L}` 可以比對任何字母 — 包括 ñ、é、中、ก、ا。`\p{N}` 比對任何數字,包括阿拉伯數字 ٠-٩ 等非拉丁數字。`\p{Emoji}` 比對 emoji 的 code point。沒開 /u 時,同樣的 pattern 在 surrogate-pair emoji(BMP 外的字元)上會靜默漏比對,重音字元也會被當成底字 + 結合符號的組合。打開 /u 後,引擎會把輸入當成 Unicode code point 處理,而不是原始 UTF-16 code unit — 多數跨語系的 regex bug 就此消失。