正規表示式 Regular Expression
程式進階知識: 正規表示式 Regular Expression
常見名詞
- 正規表示式
- 正規表達式
- Regular Expression
特殊字元
字元 |
說明 |
範例 |
符合的字串 |
\ |
跳脫字元,將指定字元變成字串 |
\* , \\ |
*.jpg 、http:\\ |
^ |
字串開頭字元 |
^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]+[/=?%-&_~@[]':+!]*([^<>""])*$/ |
手機 |
[0-9]{4}\-[0-9]{3}\-[0-9]{3} |
Regular Expression 網站
測試
- regex101: build, test, and debug regex
- RegExr: Learn, Build, & Test RegEx
- Rubular: a Ruby regular expression editor
- RegExp playground
- RegexPlanet - Online Regular Expression (Regex) Testing and Cookbook for: Go, Haskell, Java, JavaScript, .Net, Perl, PHP, PostgreSQL, Python, Ruby, Tcl & XRegExp
- Scriptular - Javascript Regular Expression Editor
- PHP Live Regex
視覺化
Tutorial
參考資料