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忽略空白(擴展模式)