当我们在项目中想方设法地去做验证,匹配,过滤等操作时,却发现通过一个正则表达式就解决了,就会有一种踏破铁鞋无觅处,得来全不费工夫的感觉。就说明了正则表达式用好了是多么强大。
运算符:
^ 位于[]中表示取反,位于[]外面表示一行的开头
$ 一行的结尾
- 范围
| 或者
&& 且
字符类:
[abc] a、b、c中的
[^abc] 除了a、b、c以外的
[a-zA-Z] a-z和A-Z字母中的
[0-9] 数字0-9之间
预定义字符类:
. 任何字符 (数字也是字符)
\d 数字 , 同 [0-9]
\D 非数字 ,同[^0-9]
\w 大小写字母和下斜杠, 同 [a-zA-Z_0-9]
\W 非大小写字母和下斜杠, 同[^a-zA-Z_0-9]
数量表示:
X? 0个或1个
X* 0个或多个
X+ 1个或多个
X{n} n个
X{n,} n个以上
X{n,m} n-m个
常用正则表达式
正整数
^[0-9]*[1-9][0-9]*$
一个或多个汉字
^[\u0391-\uFFE5]+$
邮政编码
^[1-9]\d{5}$
QQ号码
^[1-9]\d{4,10}$
邮箱
^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$
用户名(字母开头 + 数字/字母/下划线)
^[A-Za-z][A-Za-z1-9_-]+$
手机号码
^1[3|4|5|8][0-9]\d{8}$
URL
^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
18位身份证号
^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$