正則表達式入門教學:從零開始學 Regex
正則表達式(Regular Expression,簡稱 Regex)是一種用來描述字串比對模式的強大工具。無論你是在做表單驗證、文字搜尋還是資料提取,正則表達式都能幫你用簡潔的語法完成複雜的文字處理任務。
什麼是正則表達式?
正則表達式是一種由特殊字元和普通字元組成的模式字串,用來描述一組符合特定規則的字串。它最早由數學家 Stephen Kleene 在 1950 年代提出,後來被廣泛應用於電腦科學和程式設計中。
基本語法元素
| 語法 | 說明 | 範例 | 比對結果 |
|---|---|---|---|
. | 比對任意單一字元 | h.t | hat, hit, hot |
* | 前一字元重複 0 次以上 | ab*c | ac, abc, abbc |
+ | 前一字元重複 1 次以上 | ab+c | abc, abbc (不含 ac) |
? | 前一字元出現 0 或 1 次 | colou?r | color, colour |
^ | 比對字串開頭 | ^Hello | 以 Hello 開頭的字串 |
$ | 比對字串結尾 | world$ | 以 world 結尾的字串 |
[abc] | 比對括號內任一字元 | [aeiou] | 任何母音字母 |
[^abc] | 比對非括號內的字元 | [^0-9] | 任何非數字字元 |
字元類別縮寫
| 縮寫 | 等同於 | 說明 |
|---|---|---|
\d | [0-9] | 任何數字 |
\D | [^0-9] | 任何非數字 |
\w | [A-Za-z0-9_] | 任何文字字元 |
\W | [^A-Za-z0-9_] | 任何非文字字元 |
\s | [ \t\n\r] | 任何空白字元 |
學習建議:正則表達式最好的學習方式是邊學邊練。使用我們的線上測試工具,可以即時看到正則表達式的比對結果,大幅加速學習過程。
量詞(Quantifiers)
量詞用來指定前一個元素的重複次數:
{n}— 精確重複 n 次{n,}— 重複至少 n 次{n,m}— 重複 n 到 m 次
分組與捕獲
使用圓括號 () 可以將部分正則表達式組合在一起,形成捕獲群組。捕獲群組有兩個主要用途:將多個元素視為一個單位進行量詞操作,以及提取比對到的子字串。
常見應用範例
驗證 Email 格式
一個簡單的 Email 驗證正則:^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$
驗證手機號碼
台灣手機號碼格式:^09\d{8}$
使用工具練習
使用我們的正則表達式測試工具,即時驗證你的 Pattern:
立即使用正則表達式測試工具 →結語
正則表達式是每個開發者都應該掌握的基本技能。雖然初學時可能覺得語法晦澀,但一旦熟練後,它將成為你最強大的文字處理工具之一。
參考文獻
- IEEE. "POSIX.2 — Regular Expressions." IEEE Std 1003.2. https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
- Mozilla Developer Network. "Regular expressions." MDN Web Docs. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
- Friedl, J. "Mastering Regular Expressions." O'Reilly Media, 3rd Edition, 2006.