Regex 基礎
正規表示式模式只是一種簡潔的方式,用來描述你想比對的文字。從簡單開始:先比對一件事、測試它,然後只在需要時加入群組、錨點或量詞。
錨點
^ 表示輸入的開頭,且 $ 表示輸入的結尾。
字元類別
[0-9], [A-Z],以及 [a-z] 比對範圍。
量詞
* = 零次或多次, + = 一次或多次, ? = 可選。
常見模式
| 使用案例 | 模式 | 備註 |
|---|---|---|
| 電子郵件 | ^[^\s@]+@[^\s@]+\.[^\s@]+$ | 良好的通用驗證,不是完整的 RFC 解析器。 |
| URL | https?:\/\/[^\s]+ | 匹配基本 HTTP 與 HTTPS 連結。 |
| 整數 | ^-?\d+$ | 支援可選的負號。 |
| 小數 | ^-?\d+(\.\d+)?$ | 匹配整數與小數。 |
| 空白 | \s+ | 適合合併重複的空格與換行。 |
| 十六進位色碼 | ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ | 支援 3 位數與 6 位數色碼。 |
| IPv4 | \b(?:\d{1,3}\.){3}\d{1,3}\b | 匹配類似 IPv4 的文字,並非嚴格 0-255 驗證。 |
| 空白行 | ^\s*$ | 搭配 multiline 模式以鎖定空白列。 |
你最常使用的旗標
g global
尋找所有相符項目,而不是在第一個相符後停止。
i ignore case
讓比對忽略大小寫,適用於關鍵字與使用者輸入。
m multiline
讓 ^ 與 $ 逐行運作。
s dotall
讓我們 . 比對換行以及一般字元。
常見的正規表示式陷阱
- 不要一開始就寫出龐大的全能模式。逐步建構並測試每個部分。
- 記得跳脫特殊字元,例如 ., ?, +,以及 [ 當你要表示字面字元時。
- 如果只要完整單字,請加入邊界,例如 \bword\b.
- 小心貪婪比對。 .* 通常會擷取超出預期的內容。
請搭配合適工具使用此參考資料
在這裡查詢模式,接著即時測試、套用到實際文字,或用在取代流程中。
相關工具