首頁/部落格/正則表達式入門指南:從零開始學 Regex|線上正則測試器教學
指南

正則表達式入門指南:從零開始學 Regex|線上正則測試器教學

完整的正則表達式(Regex)入門教學,從基礎語法到實用範例,搭配線上測試器即時驗證。涵蓋字元匹配、量詞、分組、斷言等核心概念,適合程式開發者和數據分析師。

奧特線上工具2026/2/1320 分鐘閱讀2 次瀏覽
正則表達式入門指南:從零開始學 Regex|線上正則測試器教學

正則表達式入門指南:從零開始學 Regex

什麼是正則表達式(Regular Expression)?

正則表達式(Regular Expression,簡稱 Regex 或 RegExp)是一種用於描述文字模式的特殊語法。它就像是一種「搜尋語言」,讓您能夠用簡潔的表達式來匹配、搜尋、替換複雜的文字模式。

正則表達式被廣泛應用於程式開發、數據處理、文字編輯等領域。幾乎所有主流程式語言(JavaScript、Python、Java、C# 等)都內建了正則表達式的支援。

為什麼要學正則表達式?

  • 表單驗證:驗證 Email、電話號碼、身分證號等格式
  • 數據提取:從大量文字中提取特定資訊
  • 搜尋替換:進行複雜的文字搜尋和批量替換
  • 日誌分析:從伺服器日誌中提取關鍵資訊
  • 網頁爬蟲:解析 HTML 內容,提取所需數據

基礎語法:字元匹配

普通字元

最簡單的正則表達式就是普通字元,它會精確匹配對應的文字。例如,正則 hello 會匹配字串中的 "hello"。

特殊字元(元字元)

正則表達式中有一些具有特殊含義的字元:

元字元含義範例匹配結果
.匹配任意單個字元(換行符除外)a.cabc, a1c, a-c
\d匹配任意數字(0-9)\d{3}123, 456, 789
\w匹配字母、數字或底線\w+hello, test_123
\s匹配空白字元(空格、Tab 等)a\sba b
\D匹配非數字字元\D+abc, hello
\W匹配非字母數字字元\W@, #, !
\S匹配非空白字元\S+hello, 123

您可以使用我們的正則表達式測試器 [blocked]即時驗證這些語法。


量詞:控制匹配次數

量詞用於指定前面的元素應該匹配多少次:

量詞含義範例匹配結果
*匹配 0 次或多次ab*cac, abc, abbc
+匹配 1 次或多次ab+cabc, abbc(不匹配 ac)
?匹配 0 次或 1 次colou?rcolor, colour
{n}精確匹配 n 次\d{4}2024, 1234
{n,}匹配至少 n 次\d{2,}12, 123, 1234
{n,m}匹配 n 到 m 次\d{2,4}12, 123, 1234

貪婪匹配 vs 懶惰匹配

預設情況下,量詞是「貪婪」的,會盡可能多地匹配字元。在量詞後加上 ? 可以變成「懶惰」匹配,盡可能少地匹配。

例如,對於字串 <div>hello</div>

  • 貪婪匹配 <.*> → 匹配整個 <div>hello</div>
  • 懶惰匹配 <.*?> → 匹配 <div></div>

字元類別:匹配特定字元集

使用方括號 [] 可以定義一組可匹配的字元:

語法含義範例
[abc]匹配 a、b 或 c[aeiou] 匹配母音
[a-z]匹配 a 到 z 的任意字元小寫字母
[A-Z]匹配 A 到 Z 的任意字元大寫字母
[0-9]匹配 0 到 9 的任意數字等同於 \d
[^abc]匹配除了 a、b、c 以外的字元否定字元類

錨點:定位匹配位置

錨點不匹配字元,而是匹配位置:

錨點含義範例說明
^匹配字串開頭^Hello匹配以 Hello 開頭的字串
$匹配字串結尾world$匹配以 world 結尾的字串
\b匹配單詞邊界\bcat\b匹配獨立的 cat,不匹配 category

分組與捕獲

使用圓括號 () 可以將多個元素組成一個群組:

基本分組(abc)+ 匹配一個或多個 "abc" 序列。

捕獲群組:圓括號不僅用於分組,還會「捕獲」匹配的內容,可以在後續引用。例如 (\d{4})-(\d{2})-(\d{2}) 可以分別捕獲年、月、日。

非捕獲群組:如果只需要分組而不需要捕獲,可以使用 (?:...)

在我們的正則測試器 [blocked]中,您可以清楚地看到每個捕獲群組匹配的內容。


實用正則表達式範例

以下是一些常用的正則表達式範例,您可以直接在我們的正則測試器 [blocked]中測試:

Email 驗證

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

這個正則可以驗證基本的 Email 格式,包含用戶名、@ 符號、域名和頂級域名。

台灣手機號碼

^09\d{8}$

匹配台灣手機號碼格式:09 開頭,後接 8 位數字。

URL 匹配

https?:\/\/[\w\-]+(\.[\w\-]+)+[\/\w\-._~:?#[\]@!$&'()*+,;=]*

匹配 HTTP 和 HTTPS 網址。

台灣身分證號碼

^[A-Z][12]\d{8}$

匹配台灣身分證號碼格式:一個大寫英文字母 + 1 或 2 + 8 位數字。

IPv4 地址

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

精確匹配 IPv4 地址,每個數字段在 0-255 之間。


常見問題(FAQ)

正則表達式在不同程式語言中是否相同?

基本語法大致相同,但不同語言可能有一些差異。例如,JavaScript 使用 /pattern/flags 語法,Python 使用 re 模組。我們的測試器使用 JavaScript 正則引擎。

如何除錯複雜的正則表達式?

建議使用我們的正則測試器 [blocked],它提供即時匹配高亮和分組捕獲顯示,幫助您逐步驗證和除錯正則表達式。

正則表達式有效能問題嗎?

是的,不當的正則表達式可能導致「災難性回溯」(Catastrophic Backtracking),嚴重影響效能。避免使用巢狀量詞(如 (a+)+),並盡量使用具體的字元類別而非通配符。

如何學習更進階的正則表達式?

掌握基礎後,可以進一步學習前瞻斷言(Lookahead)、後顧斷言(Lookbehind)、命名捕獲群組等進階功能。持續練習是最好的學習方式。


相關工具推薦

  • 正則表達式測試器 [blocked]:即時測試和驗證正則表達式
  • 文字比對工具 [blocked]:比較兩段文字的差異
  • URL 編碼/解碼器 [blocked]:處理 URL 中的特殊字元
  • JSON 格式化工具 [blocked]:格式化和驗證 JSON 數據

立即使用我們的免費正則測試器 [blocked],邊學邊練,快速掌握正則表達式!

立即試用相關工具

馬上體驗文章中提到的功能