正则表达式是什么#
正则表达式就是记录文本规则的代码。
测试正则表达式#
在线测试工具:wegester
元字符#
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
例:
查找目标 | 正则表达式 |
---|---|
hi 后面不远处跟着一个 Lucy | \bhi\b.*\bLucy\b |
以 0 开头,然后是两个数字,然后是一个连字号 “-”,最后是 8 个数字 | 0\d\d-\d\d\d\d\d\d\d\d 或 0\d {2}-\d {8} |
匹配以字母 a 开头的单词 | \ba\w*\b |
1 个或更多连续的数字 | \d+ |
刚好 6 个字符的单词 | \b\w{6}\b |
整个字符串是 5 到 12 位数字 | ^\d{5,12}$ |
字符转义#
例:
查找目标 | 正则表达式 |
---|---|
deerchao.cn | deerchao\.cn |
C:\Windows | C:\\Windows |
重复#
代码 / 语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复 n 次 |
{n,} | 重复 n 次或更多次 |
{n,m} | 重复 n 到 m 次 |
例:
正则表达式 | 查找目标 |
---|---|
Windows\d+ | Windows 后面跟 1 个或更多数字 |
^\w+ | 一行的第一个单词 |
字符类#
例:
正则表达式 | 查找目标 |
---|---|
[aeiou] | 任何一个英文元音字母 |
[0-9] | 一位数字 |
(?0\d{2}[) -]?\d{8} | 几种格式的电话号码 |
分枝条件#
匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
例:
正则表达式 | 查找目标 |
---|---|
0\d{2}-\d{8}|0\d{3}-\d{7} | 三位区号,8 位本地号 或 4 位区号,7 位本地号 |
\d{5}-\d{4}|\d{5} | 美国邮编的规则是 5 位数字,或者用连字号间隔的 9 位数字 |
分组#
可以用小括号来指定子表达式(也叫做分组)
例:
正则表达式 | 查找目标 |
---|---|
(\d{1,3}.){3}\d{1,3} | 简单的 IP 地址匹配 |
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) | 正确的 IP 地址 |
反义#
代码 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了 x 以外的任意字符 |
[^aeiou] | 匹配除了 aeiou 这几个字母以外的任意字符 |
例:
正则表达式 | 查找目标 |
---|---|
\S+ | 不包含空白符的字符串 |
<a[^>]+> | 用尖括号括起来的以 a 开头的字符串 |