基础
行定位符
^
表示行的开始,$
表示行的结尾
例:^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中 |
\b |
退格,即ASCII中 |
\e |
退出,即ASCII中 |
\f |
换页符,即ASCII中 |
\n |
换行符,即ASCII中 |
\r |
回车符,即ASCII中 |
\t |
制表符,即ASCII中 |
\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)) |