跳至主要內容
FreeOnlineTools Go
繁體中文
解釋

什麼是正規表示式?完整說明

作者:FreeOnlineTools Team · 更新日期:2026-09-02

快速解答

正規表示式是描述一組字串的模式。它使用文字字元(匹配自身)和具有特殊意義的元字元(*、+、?、.、^、$、[]、()、{}、|、\)。正規表示式用於驗證、搜尋、提取和替換。使用我們的免費正規表示式測試器根據瀏覽器中的文字測試模式。

介紹

正規表示式(regex 或 regexp)是定義搜尋模式的字元序列。字串搜尋演算法使用該模式來尋找、匹配或取代文字。正規表示式起源於 20 世紀 50 年代的形式語言理論(Stephen Kleene),並在 1970 年代被採用到 Unix 文本工具(grep、sed、awk)中。如今,正規表示式幾乎內建於所有程式語言和文字編輯器中。正規表示式功能強大——它可以驗證電子郵件格式、從日誌中提取資料並查找複雜的模式——但語法很密集且非常難以閱讀。

步步

  1. 理解文字和元字符

    文字字元(a、b、1、@)與其自身相符。元字符具有特殊意義: .匹配任何字符,* 表示零個或多個,+ 表示一個或多個,?表示零或一,^ 匹配開始,$ 匹配結束。

  2. 學習角色類別

    方括號 [] 定義字元類別 - [aeiou] 匹配任何元音,[0-9] 匹配任何數字,[^0-9] 匹配任何非數字。速記類:\d(數字)、\w(單字字元)、\s(空格)及其大寫否定。

  3. 使用量詞

    量詞指定模式重複的次數:* (0+)、+ (1+)、? (0 或 1)、{n}(剛好是 n)、{n,}(n+)、{n,m}(n 到 m)。默認貪婪;加 ?用於惰性匹配(例如,*?)。

  4. 群組和主播

    括號 () 建立捕獲組。交替 |匹配任一側 (cat|dog)。錨點 ^ 和 $ 匹配字串的開頭和結尾。使用它們從簡單的模式建立複雜的模式。

範例

匹配類似電子郵件的模式

輸入: Pattern: [a-z]+@[a-z]+\.[a-z]+

輸出: 匹配:alice@example.com、bob@test.org

匹配電話號碼格式

輸入: Pattern: \d{3}-\d{3}-\d{4}

輸出: Matches: 555-123-4567

提取鍵值對

輸入: Pattern: (\w+)=(\w+)

輸出: Matches 'key=value' with group 1 as key, group 2 as value

常見問題

  • 貪婪匹配會過度消耗 —.* 盡可能多的匹配。使用 。 *?用於惰性匹配以找到最短匹配。
  • 忘記轉義特殊字元 —.、*、+、? 等都是特殊字元。使用 \ 按字面匹配它們(例如,\. 匹配字面點)。
  • 災難性回溯-具有嵌套量詞的模式(例如,(a+)+)可能會在某些輸入上花費指數時間,從而導致 ReDoS 攻擊。
  • 過度匹配-沒有錨點(^ 和 $),模式可以匹配任何地方。使用 ^...$ 來匹配整個字串。

提示

  • 從簡單開始,逐漸增加複雜性——一次調試一個複雜的正規表示式非常困難。
  • 使用正規表示式測試器根據範例文字試驗模式 - 查看即時突出顯示的匹配項。
  • 使用擴展模式(某些引擎中的 /x 標誌)註解複雜的正規表示式或將它們分解為命名部分。
  • 使用我們的正規表示式測試器在瀏覽器中立即測試模式 - 無需註冊,完全私密。

相關工具

相關指南

參考