視覺化 Regex 建構器 · 內建 Cheat Sheet 與複雜度分析

Regex 正規表達式產生器 Builder & Cheat Sheet

透過勾選條件自動產生正規表達式,內建常用模板庫與語法速查表。 支援 Regex Explain 解析與 Complexity Meter 複雜度分析,幫助你學習與建立高效的正規表達式。

條件設定

Live Preview

尚未產生 Regex,請勾選條件後點擊「產生 Regex」

複雜度
☆☆☆☆☆
效能風險
Low
巢狀量詞
None

等待分析⋯

0 matches

常見問題

Regex 是什麼?為什麼需要學它?
正規表達式(Regular Expression,簡稱 Regex)是一種用來描述字串模式的語言。透過特殊的語法,你可以比對、搜尋、取代符合特定規則的文字。

舉例來說,^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ 這串看似複雜的符號,其實就是在描述「Email 地址」的格式規則。

學習 Regex 可以讓你在資料驗證、文字處理、日誌分析、程式碼重構等場景中大幅提升效率。雖然初看有點嚇人,但掌握核心概念後,你會發現它是開發者工具箱中最強大的武器之一。
Regex Tester 和 Regex Builder 有什麼不同?
兩者是互補的工具:

Regex Tester 專注於「測試與除錯」——你輸入一組 Regex 和測試字串,它能即時顯示匹配結果、捕獲群組、標記高亮,幫助你驗證 Regex 是否正確。

Regex Builder 則專注於「組合與學習」——透過勾選條件、選擇模板,自動產生 Regex 程式碼。對於正在學習 Regex 或不想從頭寫語法的人來說,Builder 能大幅降低使用門檻。

建議搭配使用:先用 Builder 快速產生基礎 Regex,再複製到 Regex Tester 中進行細節調整與驗證。
什麼是 Catastrophic Backtracking(災難性回溯)?
災難性回溯是正規表達式引擎因為「巢狀量詞」(如 (a+)+$)而導致的指數級運算爆炸。

當 Regex 中存在巢狀的 +*{n,m},且輸入字串「幾乎符合但又不完全符合」時,引擎會嘗試所有可能的組合,導致運算時間指數級增長。

經典範例: (a+)+b 搭配輸入 aaaaaaaaaaaaaX(15 個 a),引擎需要嘗試 2^15 = 32,768 條路徑;30 個 a 則暴增到 10 億條以上。

本工具的 Complexity Meter 會自動偵測潛在的巢狀量詞風險,幫助你避免寫出危險的正則表達式。
如何提升 Regex 的可讀性?
以下四個技巧可以大幅提升 Regex 的可讀性:

1. 使用具名捕獲群組
與其寫 (\d{4})-(\d{2})-(\d{2}),不如寫 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}),一目瞭然。

2. 用 /x 模式加入註解
在某些 Regex 引擎中(如 PCRE、Perl),可以使用 verbose 模式,在 Regex 中加入空白與註解。

3. 將複雜 Regex 拆解為變數組合
將複雜的部分先指派給變數再組合,例如:const email = /^[\w.-]+@[\w.-]+\.\w+$/

4. 逐步構建
不要一次寫完複雜的 Regex。先寫最簡單的部分,確認正確後再逐步疊加條件——這正是 Regex Builder 的設計理念。
Regex 中的 Lookahead 和 Lookbehind 是什麼?
Lookahead(前瞻)和 Lookbehind(後顧)合稱為 Lookaround Assertions(環視斷言),它們會檢查「位置前後的條件」,但不會消耗字元或將匹配內容納入結果。

前瞻 Lookahead (?=...) 檢查前方是否為指定模式。
範例:\d(?=px) 可匹配 16px 中的 6(但不會匹配 16em 中的 6)。

否定前瞻 (?!...) 檢查前方「不是」指定模式。

後顧 Lookbehind (?<=...) 檢查後方是否為指定模式。
範例:(?<=\$)100 可匹配 $100 中的 100

注意:Lookbehind 在部分瀏覽器或舊版 JavaScript 中支援度有限,使用前建議先確認目標環境。
Regex 中的貪婪與懶惰量詞有什麼不同?
貪婪(Greedy)是量詞的預設行為:*+{n,m} 在預設情況下會匹配「儘可能多的字元」。

懶惰(Lazy / Non-greedy)則是在量詞後加上 ?,使其匹配「儘可能少的字元」。

範例說明:
對字串 <div><p>text</p></div>
<.+>(貪婪)會匹配整個字串
<.+?>(懶惰)只會匹配 <div>

選擇貪婪還是懶惰取決於你的需求。過度使用貪婪量詞可能導致效能問題(特別是巢狀結構時),適時使用懶惰量詞可以提升匹配效率與準確性。

正規表達式完全入門:從零開始建立你的第一個 Regex

正規表達式(Regular Expression)是程式開發中最強大也最容易被低估的工具之一。無論你是剛開始學習程式設計的新手,還是經驗豐富的工程師,Regex 都能幫助你用更少的程式碼處理更複雜的文字邏輯。

Regex 的核心概念

正規表達式的本質是「一種描述字串模式的語言」。它由普通字元(如字母、數字)和特殊字元(稱為「元字元」metacharacters)組成。舉例來說,[0-9] 代表「任何一個數字」,而 + 則代表「前面的一個字元可以出現一次或多次」。

學習 Regex 的捷徑不是死背語法,而是理解三個基本元素:字元類別(Character Classes)告訴引擎要匹配什麼類型的字元;量詞(Quantifiers)告訴引擎要匹配多少個;定位點(Anchors)告訴引擎要在字串的哪個位置進行匹配。

常見應用場景

表單驗證: Email、電話號碼、密碼強度、網址格式的驗證幾乎都依賴 Regex。一個好的 Regex 可以在使用者提交表單前就完成格式檢查,提升使用者體驗。

文字搜尋與取代: IDE 中的「Find in Files」功能、sed 指令、VS Code 的搜尋取代都支援 Regex。學會 Regex 可以讓你在數萬行程式碼中精準定位目標。

日誌分析: 伺服器日誌(如 Nginx、Apache、Docker logs)通常使用 Regex 來擷取特定的時間戳、IP 位址、錯誤碼等資訊。

資料清洗: 從混亂的文字中萃取結構化資料——例如從 HTML 中提取所有連結、從 CSV 中過濾特定格式的資料行。

學習路徑建議

如果你剛開始接觸 Regex,建議按照以下順序學習:先掌握單一字元匹配(.\d\w\s),再理解量詞(*+?{n,m}),然後是定位點(^$),最後才是群組與環視斷言。使用本工具的 Pattern Builder 與 Cheat Sheet 搭配學習,可以讓學習曲線更加平緩。

操作成功