基础

行定位符

^表示行的开始,$表示行的结尾

例:^a表示以字母a开头的字符串,b$表示以字母b结尾的字符串

单词定界符

\b表示匹配一个完整的词,\B则匹配不是完整的词,而是一部分

例:\btm\b表示匹配一个完整的单词“tm”,而\Btm\B则匹配任何出现“tm”的地方,如“html”

字符类

[]匹配任何出现在括号内的字符,注意:一个方括号只能匹配一个字符

例:[Aa]表示匹配字母a,不区分大小写

选择字符

|表示“或”,注意:|可以匹配任意长度字符

例:(a|A)匹配字母a,不区分大小写

连字符

-可见逻辑上相连的字符一起表示

例:[a-zA-Z]表示匹配所有字母,不区分大小写

排除字符

^表示排除某字符

例:[^a-z]表示不以字母和下划线开头的字符

限定符

限定符 说明
? 匹配前面的字符零次或一次
+ 匹配前面的字符一次或多次
* 匹配前面的字符零次或多次
{n} 匹配前面的字符n次
{n,} 匹配前面的字符至少n次
{n,m} 匹配前面的字符至少n次,最多m次

点字符

.可匹配除换行符外任意一个字符

例:^s.t$可匹配任意以s开头、t结尾、中间只有一个字母的单词,如sit,set

转义字符

\和大多语言一样,为了将特殊字符转义为普通字符。除此之外还可以显示不可打印字符、指定预定义字符集和定义断言,如下所示:

字符 说明
\a 警报,即ASCII中字符(0x07)
\b 退格,即ASCII中字符(0x08)
\e 退出,即ASCII中字符(0x1B)
\f 换页符,即ASCII中字符(0x0C)
\n 换行符,即ASCII中字符(0x0A)
\r 回车符,即ASCII中字符(0x0D)
\t 制表符,即ASCII中字符(0x09)
\xhh 十六进制代码
\ddd 八进制代码
cx 其中x为任意字符,匹配任何由x指明的控制字符
\d 表示任意十进制数字,与[0-9]相同
\D 表示任意非十进制数字
\s 表示任意空白字符,与[\f\n\r\t]相同
\S 表示任意非空白字符
\w 表示任意单词字符,与[a-zA-Z0-9]相同
\W 表示任意非单词字符
\A 表示待搜索文本的起始位置
\Z 表示在未指定任何模式下匹配的字符,通常是字符串的末尾或字符串末尾的换行符之前的位置
\z 匹配字符串的末尾而不考虑换行符
\G 表示当前匹配的起始位置

括号字符

()可改变限定符的作用范围,也可对表达式进行分组

数字

释义表达式
数字^[0-9]\*$
整数^-?[1-9]\d\*$
正整数^[1-9]\d\*$
负整数^-[1-9]\d\*$
非负整数^[1-9]\d\*|0$
非正整数^-[1-9]\d\*|0$
n位数字^\d{n}$
至少n位的数字^\d{n,}$
m位到n位的数字^\d{m,n}$
非零开头且最多两位小数的数字^([1-9][0-9]\*)+(.[0-9]{1,2})?$
实数(不包括0)^(\-|\+)?\d+(\.\d+)?$
正浮点数^[1-9]\d\*\\.\d\*|0\\.\d\*[1-9]\d\*$
负浮点数^-([1-9]\d\*\\.\d\*|0\\.\d\*[1-9]\d\*)$
浮点数^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d\*\.\d\*|0\.\d\*[1-9]\d\*|0?\.0+|0)$

字符

释义表达式
英文和数字^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
数字和2英文字母的字符串^[A-Za-z0-9]+$
中文、英文、数字、下划线^[\u4E00-\u9FA5A-Za-z0-9_]+$
可以输入含有^%&’,;=?$\”等字符[^%&',;=?$\x22]+

常用

释义表达式
18位身份证^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
日期格式(严格匹配:年-月-日)([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
我国邮编[1-9]\d{5}(?!\d)
国内电话号码\d{3}-\d{8}|\d{4}-\{7,8}
网址匹配[a-zA-z]+://[^\s]\*
邮箱匹配^\w+([-+.]\w+)\*@\w+([-.]\w+)\*\.\w+([-.]\w+)\*$ 或 [\w!#$%&'\*+/=?^\_\`{|}~-]+(?:\.[\w!#$%&'\*+/=?^\_\`{|}~-]+)\*@(?:[\w]\(?:[\w-]\*[\w])?\.)+[\w]\(?:[\w-]\*[\w])?
中文字符[\u4e00-\u9fa5]
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)^(?=.\*\d)(?=.\*[a-z])(?=.\*[A-Z]).{8,10}$
IP\d+\.\d+\.\d+\.\d+
强IP匹配((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))