正规表示式 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
参考资料