正则匹配
正则表达式是处理字符串的强大工具,它有自己的特定语法结构,可以实现字符串的检索、替换、匹配验证等功能。
在线正则表达式测试工具
常用匹配规则
模式 | 规则 |
---|---|
\w |
匹配字母、数字及下划线 |
\W |
匹配不是字母、数字及下划线的字符 |
\s |
匹配任意空白字符,等价于[\t\n\r\f] |
\S |
匹配任意非空白字符 |
\d |
匹配任意数字,等价于[0-9] |
\D |
匹配任意非数字的字符 |
\A |
匹配字符串开头 |
\Z |
匹配字符串结尾,如果存在换行,只匹配到换行前的字符串结束 |
\z |
匹配字符串结尾,如果存在换行,同时还会匹配换行符 |
\G |
匹配最后匹配完成的位置 |
\n |
匹配一个换行符 |
\t |
匹配一个制表符 |
^ |
匹配一行字符串的开头 |
$ |
匹配一行字符串的结尾 |
. |
匹配任意字符,除了换行符 |
[...] |
用来表示一组字符,单独列出,如[amk] ,匹配a 、m 或k |
[^...] |
匹配不在[] 中的字符,如[^abc] ,匹配除了a 、b 、c 以外的字符 |
* |
匹配0 个或多个表达式 |
+ |
匹配1 个或多个表达式 |
? |
匹配0 个或1 个前面的正则表达式定义的片段,非贪婪方式 |
{n} |
精确匹配n 个前面的表达式 |
{n,m} |
匹配n 到m 次由前面正则表达式定义的片段,贪婪方式 |
alb |
匹配a 或b |
() |
匹配括号内的表达式,也表示一个组 |
以上看不懂也没关系,接下来逐一用实例介绍。
.
表示匹配任意单个字符
代替任意一个字符,并且匹配多次
*
(贪婪)
表示匹配任意
0
个或多个字符
以下匹配到所有的字符a
,匹配多次:
a*
[]
表示匹配括号中的任意字符
以下匹配到任意0
到9
的数字,匹配多次:
[0-9]
1 | eg:[abc] 匹配字符a、b或者c |
^
表示匹配字符或字符串开头,有时还会匹配文档的起始位置
以下匹配以abc
开头的字符串,匹配一次:
^abc
$
表示匹配字符或字符串的结尾
以下匹配以a
结尾的字符串,匹配一次:
a$
+
(懒惰)
表示匹配任意
1
个或多个字符
以下匹配1
个或多个a
,匹配多次:
a+
?
(占有)
表示匹配任意
0
个或1
个字符
以下匹配0
个或1
个a
,匹配多次:
a?
{n}
表示重复
n
次
以下匹配重复2
次的a
,匹配多次:
a{2}
{n,m}
表示重复
n
到m
次
以下匹配重复2
到3
次的a
,匹配多次:
a{2,3}
a|b
表示匹配
a
或b
以下匹配到a
或b
,匹配多次:
a|b
()
表示分组
\b
表示匹配任意字符边界
以下匹配在边界的a
(前面或后面出现空格),匹配多次:
\ba\b
\d
表示匹配任意数字
以下匹配到任意一个数字,匹配多次:
\d
\w
表示匹配数字、字母及下划线
以下匹配任意数字、字母、下划线,匹配多次:
\w
\s
表示匹配空格
以下匹配任意空格,匹配多次:
一些实例
Email
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
URL
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
密码
以字母开头,长度在6~18之间,只能包含字母、数字和下划线
^[a-zA-Z]\w{5,17}$
日期格式
^\d{4}-\d{1,2}-\d{1,2}