正規表示式 Regular Expression

程式進階知識: 正規表示式 Regular Expression

常見名詞

  • 正規表示式
  • 正規表達式
  • Regular Expression

特殊字元

字元 說明 範例 符合的字串
\ 跳脫字元,將指定字元變成字串 \*, \\ *.jpghttp:\\
^ 字串開頭字元 ^a abc
$ 字串開結尾字元 t$ eat
* 字元出現 0~n a* aaa
+ 字元出現 1~n 次,等於 {1,} a+a{1,} aaa
? 字元出現 0~1 次,等於 {0,1} a?a{0,1} a
. 除了換行字元,其他字元都符合
() 擷取資料括弧 (abc) abc
x(?=y) 符合 x 的字元,但後方要接 y 字元
x(?!y) 符合 x 的字元,但後方不是 y 字元
`x y` 符合 x 的字元,或是 y 字元
{n} 字元出現 n 次
{n,m} 字元至少出現 n 次,至多出現 m 次
[xyz] 字元的集合,這個字要包含集合中的候選字 [xyz][a-z] xyz
[^xyz] 字元的集合,這個字不能包含集合中的候選字 [^xyz][^a-z] 123
\d 整數,等於 [0-9] \d[0-9] 123
\s 符合空白、tab 等任何字元,等於 [^\f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
\S 符合非空白、tab 等任何字元,等於 [^\f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
\t 符合 tab 字元
\w 符合數字字母底線字元,等於 [A-Za-z0-9_] \w[A-Za-z0-9_] abc_123
\W 符合非數字字母底線字元,等於 [^A-Za-z0-9_] \W[^A-Za-z0-9_]

跳脫特殊字元

字元 跳脫
\ \\
( \(
) \)
[ \[
] \]
{ \{
} \}

參考正規表示式

比對項目 正規表示式
ip 位址 \d+\.\d+\.\d+\.\d+
中文字 [\u4e00-\u9fa5]
Email \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
郵遞區號 \d{3}((-)?\d{2})?
網址 /^http://[a-za-z0-9]+.[a-za-z0-9]+[/=?%-&amp;_~@[]':+!]*([^<>""])*$/
手機 [0-9]{4}\-[0-9]{3}\-[0-9]{3}

Regular Expression 網站

測試

視覺化

Tutorial

參考資料