参考:https://deerchao.cn/tutorials/regex/regex.htm

正则表达式是什么

正则表达式就是记录文本规则的代码。

测试正则表达式

在线测试工具: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开头的字符串

后向引用