正则表达式
正则表达式基础
1. 元字符
元字符 | 说明 |
---|---|
. | 匹配除换行符以外的任何数字 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
例:
1.匹配有abc出现的字符串
\babc或者^abc
2.匹配8位数字qq号
^\d\d\d\d\d\d\d\d$
3.匹配1开头的11位数字手机号码
^1\d\d\d\d\d\d\d\d\d\d$
2. 重复限定符
语法 | 说明 |
---|---|
* | 重复零次或者更多次 |
+ | 重复一次或者更多次 |
? | 重复零次或者一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
1.匹配8位数字QQ号
^\d{8}$
2.匹配1开头的11位数字的手机号码
^1\d{10}$
3.匹配银行卡号是14-18位的数字
^\d{14,18}$
4.匹配以a开头的,0个或者多个b结尾的字符串
^ab*$
runoo+b,可以匹配runoob,runooob,runoooooooob,"+"代表前面的字符至少出现一次(一次或多次)
runoo*b,可以匹配runob,runoob,runoooob,"*"代表字符可以不出现,也可以出现一次或多次
colou?r,可以匹配color或colour,"?"代表前面的字符最多出现1次(0次或1次)
3. 分组
如上边二4中的例子,我想让ab同时被*限定,那么可以使用()来做限定
匹配字符串中包含0到多个ab开头
^(ab)*
4. 转义
对于上边的,如果需要对"+","?“这样的特殊字符进行查询,需要添加转义字符”/+"
如要匹配以(ab)开头的
^(\(ab\))*
5. 条件或
刚才的手机号匹配,我们知道不同运营商的手机号有自己的号段,例如联通有130/131/132/155/156/185/186/145/176等号段,假如让我们匹配联通的号码,我们需要使用或
正则表达式用“|“符号来表示“或“,叫做分支条件,当满足任何一个条件时,都会匹配成功
如
^(130|131|132|155|156|185|186|145|176)\d{8}$
6. 区间
五 条件或中的例子还有简化的方法
正则表达式提供一个元字符中括号[]表达区间条件
1.限定0到9,可以写为[0-9]
2.限定a到z,可以写成[a-z]
3.限定某些数字,可以写为[123456]
则上边的正则表达式可以改为如下
^(13[0-2]|15[5-6]|18[56]|145|176)\d{8}$