正则表达式

正则表达式匹配字符串内容的一种规则

字符组 : [字符组]

正则
待匹配字符
匹配
结果
说明
[0123456789]
8
True
在一个字符组里枚举合法的所有字符,字符组里的任意一个字符
和"待匹配字符"相同都视为可以匹配
[0123456789]
a
False
由于字符组中没有"a"字符,所以不能匹配
 
[0-9]
 
7
True
也可以用-表示范围,[0-9]就和[0123456789]是一个意思
 
[a-z]
 
s
 
True
 
同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示
 
[A-Z]
 
B
 
True
 
[A-Z]就表示所有的大写字母
 
[0-9a-fA-F]
 
e
 
True
 
可以匹配数字,大小写形式的a~f,用来验证十六进制字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

字符:

 
元字符
 
匹配内容
匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

量词:

量词
用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

 

 

 

 

 

 

 

 

 

 

注意:*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配 转义符 \ .*?的用法

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
合在一起就是 取尽量少的任意字符,

一般不会这么单独写,大多用在: .
*?x 表示取前面任意长度的字符,直到一个x出现

 

 

邮箱:[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
匹配中文字符:[\u4e00-\u9fa5]
匹配双字节字符(包括汉字):[^\x00-\xff]
匹配网址: [a-zA-z]+://[^\s]*
国内电话号码: \d{3}-\d{8}|\d{4}-\{7,8}
QQ号: [1-9][0-9]{4,}
中国邮编:[1-9]\d{5}(?!\d)
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*$
负整数:^-[1-9]\d*$
整数:^-?[1-9]\d*$
非负整数:^[1-9]\d*|0$
正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$

 

posted @ 2019-02-18 14:45  李小样  阅读(63)  评论(0编辑  收藏  举报