Regex
正則表達式(Regular Expression)語法快速參考。
字元匹配
| 語法 | 說明 |
|---|---|
. | 匹配除換行符外的任意單個字元 |
\d | 匹配任意單個數字 (0-9) |
\D | 匹配任意非數字字元 |
\w | 匹配字母、數字、底線 [A-Za-z0-9_] |
\W | 匹配非字母、數字、底線的字元 |
\s | 匹配任意空白字元 (空格、tab、換行等) |
\S | 匹配任意非空白字元 |
位置匹配
| 語法 | 說明 |
|---|---|
^ | 匹配字串的開始位置 |
$ | 匹配字串的結束位置 |
\b | 匹配單詞邊界 (單詞開始或結束的位置) |
\B | 匹配非單詞邊界 |
重複次數
| 語法 | 說明 |
|---|---|
* | 匹配前面的字元零次或多次 |
+ | 匹配前面的字元一次或多次 |
? | 匹配前面的字元零次或一次 |
{n} | 匹配前面的字元剛好 n 次 |
{n,} | 匹配前面的字元至少 n 次 |
{n,m} | 匹配前面的字元至少 n 次但不超過 m 次 |
字元類
| 語法 | 說明 |
|---|---|
[abc] | 匹配方括號中的任意一個字元 |
[^abc] | 匹配除方括號中字元以外的任意字元 |
[a-z] | 匹配小寫字母 a 到 z |
[A-Z] | 匹配大寫字母 A 到 Z |
[0-9] | 匹配數字 0 到 9 |
[a-zA-Z0-9] | 匹配字母和數字 |
分組和邏輯運算
| 語法 | 說明 |
|---|---|
(pattern) | 創建一個捕獲組,可以將多個字元作為一個整體處理 |
| | 匹配多個模式中的任意一個(邏輯或) |
(?:pattern) | 非捕獲組,不保存匹配的內容 |
(?=pattern) | 正向肯定預查(lookahead) |
(?!pattern) | 正向否定預查 |
(?<=pattern) | 反向肯定預查(lookbehind) |
(?<!pattern) | 反向否定預查 |
特殊字元
| 語法 | 說明 |
|---|---|
\ | 轉義字元,用於匹配特殊字元本身 |
\. | 匹配句號 |
\\ | 匹配反斜線 |
\n | 匹配換行符 |
\t | 匹配 Tab |
\r | 匹配回車符 |
常用組合
| 模式 | 說明 |
|---|---|
\d+ | 匹配一個或多個數字 |
\w+ | 匹配一個或多個文字字元 |
\s+ | 匹配一個或多個空白字元 |
[A-Za-z]+ | 匹配一個或多個英文字母 |
\b\w+\b | 匹配完整的單字 |
.* | 匹配任意字元(貪婪模式) |
.*? | 匹配任意字元(非貪婪模式) |
實用範例
Email 驗證
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$URL 匹配
https?:\/\/[^\s]+電話號碼(台灣)
^09\d{8}$IPv4 地址
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b日期格式 (YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$HTML 標籤
<[^>]+>去除空白行
^\s*$提取引號內容
["']([^"']+)["']貪婪與非貪婪
| 模式 | 說明 |
|---|---|
.* | 貪婪模式:盡可能匹配多的字元 |
.*? | 非貪婪模式:盡可能匹配少的字元 |
.+? | 非貪婪的一個或多個 |
.?? | 非貪婪的零個或一個 |
範例
對於字串 <div>content</div>:
<.*>匹配<div>content</div>(貪婪)<.*?>匹配<div>(非貪婪)
修飾符
| 修飾符 | 說明 |
|---|---|
i | 忽略大小寫 |
g | 全域匹配 |
m | 多行模式 |
s | 讓 . 可以匹配換行符 |
x | 忽略空白(擴展模式) |