元字元速查總表
| 字元 | 名稱 | 意義 | 範例 | 匹配結果 |
\ | 轉義 | 下一字元為字面義,或賦予特殊意義 | \. | 匹配字面點號 |
^ | 行首錨點 | 匹配字串/行開頭 | ^A | "Apple" ✓, "an Apple" ✗ |
$ | 行尾錨點 | 匹配字串/行結尾 | t$ | "cat" ✓, "tea" ✗ |
* | 零或多 | 前一元素 0~n 次 | ab*c | "ac", "abc", "abbc"... |
+ | 一或多 | 前一元素 1~n 次 {1,} | a+ | "a", "aaa"... |
? | 零或一 | 前一元素 0~1 次 {0,1} | colou?r | "color", "colour" |
. | 萬用字元 | 除換行外任意單字元 | a.c | "abc", "a-c"... |
(...) | 捕獲群組 | 匹配並記憶,反向參考 \1 | (foo)bar\1 | "foobarfoo" |
(?:...) | 非捕獲群組 | 僅分組不記憶,效能較好 | (?:foo|bar) | "foo" 或 "bar" |
| | 或 | 左右任一分支 | cat|dog | "cat" 或 "dog" |
{n} | 固定次數 | 恰好 n 次 | a{3} | "aaa" |
{n,} | 至少 n 次 | n ~ 無限 | a{2,} | "aa", "aaa"... |
{n,m} | 範圍次數 | n ~ m 次 | a{1,3} | "a", "aa", "aaa" |
[abc] | 字元類別 | 匹配列表中任一字元 | [aeiou] | 任一母音 |
[^abc] | 否定類別 | 匹配非列表字元 | [^0-9] | 非數字 |
\d | 數字簡寫 | [0-9] | \d{4} | 4 位數字 |
\D | 非數字 | [^0-9] | | |
\w | 單字字元 | [A-Za-z0-9_] | | |
\W | 非單字 | [^A-Za-z0-9_] | | |
\s | 空白字元 | [ \t\r\n\f\v] | | |
\S | 非空白 | [^ \t\r\n\f\v] | | |
\b | 單字邊界 | 單字與非單字交界 | \bcat\b | "cat" ✓, "catfish" ✗ |
\B | 非單字邊界 | 單字內部 | \Bcat\B | "scatter" ✓ |
\n | 換行 | LF (0x0A) | | |
\r | 回車 | CR (0x0D) | | |
\t | 定位符 | Tab (0x09) | | |
\v | 垂直定位 | VT (0x0B) | | |
\f | 換頁 | FF (0x0C) | | |
\ooo | 八進制 | ASCII 碼 (如 \040=空格) | | |
\xhh | 十六進制 | ASCII 碼 (如 \x20=空格) | | |
貪婪 vs 惰性量詞
貪婪 (預設): * + {n,} {n,m} -- 盡可能多匹配
惰性 (加 ?): *? +? {n,}? {n,m}? -- 盡可能少匹配
範例: "abbbc" /ab*?/ → "a" (匹配 0 個 b)
"abbbc" /ab*/ → "abbb" (匹配 3 個 b)
常用模式範例
- Email:
/^[\w.+-]+@[\w-]+\.[\w.-]+$/
- URL:
/^https?:\/\/[\w.-]+\.[a-z]{2,}/i
- 中文:
/[\x{4e00}-\x{9fa5}]+/u (需 u 修飾符)
- 手機 (台):
/^09\d{8}$/
- 身分證:
/^[A-Z][12]\d{8}$/
修飾符
| 修飾符 | 意義 |
i | 忽略大小寫 |
m | 多行模式 (^$ 匹配行首尾) |
s | 單行模式 (. 匹配換行) |
u | UTF-8 模式 (支援 Unicode 屬性 \p{Han}) |
x | 延伸格式 (忽略模式中空白、允許註解) |
PHP 函數族
preg_match() -- 單次匹配
preg_match_all() -- 全局匹配
preg_replace() -- 替換
preg_split() -- 分割
preg_grep() -- 陣列過濾
preg_quote() -- 轉義字串用於模式
收藏此表,寫正則不再查文件!