正则匹配食用指南

正则匹配

正则表达式是处理字符串的强大工具,它有自己的特定语法结构,可以实现字符串的检索、替换、匹配验证等功能。

在线正则表达式测试工具
常用匹配规则
模式 规则
\w 匹配字母、数字及下划线
\W 匹配不是字母、数字及下划线的字符
\s 匹配任意空白字符,等价于[\t\n\r\f]
\S 匹配任意非空白字符
\d 匹配任意数字,等价于[0-9]
\D 匹配任意非数字的字符
\A 匹配字符串开头
\Z 匹配字符串结尾,如果存在换行,只匹配到换行前的字符串结束
\z 匹配字符串结尾,如果存在换行,同时还会匹配换行符
\G 匹配最后匹配完成的位置
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配一行字符串的开头
$ 匹配一行字符串的结尾
. 匹配任意字符,除了换行符
[...] 用来表示一组字符,单独列出,如[amk],匹配amk
[^...] 匹配不在[]中的字符,如[^abc],匹配除了abc以外的字符
* 匹配0个或多个表达式
+ 匹配1个或多个表达式
? 匹配0个或1个前面的正则表达式定义的片段,非贪婪方式
{n} 精确匹配n个前面的表达式
{n,m} 匹配nm次由前面正则表达式定义的片段,贪婪方式
alb 匹配ab
() 匹配括号内的表达式,也表示一个组

以上看不懂也没关系,接下来逐一用实例介绍。

.

表示匹配任意单个字符

代替任意一个字符,并且匹配多次

*(贪婪)

表示匹配任意0个或多个字符

以下匹配到所有的字符a,匹配多次:

a*

[]

表示匹配括号中的任意字符

以下匹配到任意09的数字,匹配多次:

[0-9]

1
2
3
4
5
6
7
8
9
eg:[abc] 匹配字符a、b或者c

[a-z] 匹配任何字母

[0-9] 匹配任何数字

[0-9]* 匹配任何数量的任何数字

[a-z]* 匹配任何数量的任何字母
^

表示匹配字符或字符串开头,有时还会匹配文档的起始位置

以下匹配以abc开头的字符串,匹配一次:

^abc

$

表示匹配字符或字符串的结尾

以下匹配以a结尾的字符串,匹配一次:

a$

+(懒惰)

表示匹配任意1个或多个字符

以下匹配1个或多个a,匹配多次:

a+

?(占有)

表示匹配任意0个或1个字符

以下匹配0个或1a,匹配多次:

a?

{n}

表示重复n

以下匹配重复2次的a,匹配多次:

a{2}

{n,m}

表示重复nm

以下匹配重复23次的a,匹配多次:

a{2,3}

a|b

表示匹配ab

以下匹配到ab,匹配多次:

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}