正则匹配
正则表达式是处理字符串的强大工具,它有自己的特定语法结构,可以实现字符串的检索、替换、匹配验证等功能。
在线正则表达式测试工具
常用匹配规则
| 模式 | 规则 |
|---|---|
\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}