正则表达式
元字符 | |
\ | 转义符 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字、下划线或汉字字符,[0-9a-zA-Z_] |
\s | 匹配任意空白符,[\t\v\n\r\f],包括空格、水平制表符、垂直制表符、换行符、回车符、换页符 |
\d | 匹配任意数字,[0-9]表一位数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
反义 | |
\W | 匹配任意不是字母、数字、下划线或汉字字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除x以外的任意字符 |
[^abc] | 匹配除abc这几个字母以外的任意字符 |
重复限定符 | |
* | 重复零次次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
要点:
1、分组:正则表达式用小括号()做分组,即括号中的内容作为一个整体(例6)。
2、* 限定符作用于它最左边最近的一个字符(多个可以用小括号分组)(例5、6)。
3、转义:把元字符、限定符或关键字转义成普通字符就是在要转义的字符前添加斜杠“\”,如匹配字符串本身就有小括号(例7)。
4、条件或:“|”表示正则表达式的或,也叫分支,当满足正则表达式分支条件的任何一种条件,都会当成匹配成功(例8,方式一)。
5、区间:“[]”表示正则表达式的区间条件,限定0到9: [0-9],限定A-Z:[A-Z],限定某些数字:[124](例8,方式二)。
示例:
1、匹配有abc开头的字符串:/babc 或者 ^abc
2、匹配8位数字的QQ号:^\d\d\d\d\d\d\d\d$ ——> ^\d{8}$
3、匹配以1开头11位数字的手机号码:^1/d/d/d/d/d/d/d/d/d/d$ ——> ^1\d{10}$
4、匹配14~18位数字:^\d{14, 18}$
5、匹配以a开头,0或多个b结尾的字符串:^ab*$
6、匹配0到多个ab开头的字符串:^(ab)*
7、匹配以(ab)开头:^(\(ab\))$
8、匹配联通130/131/132/155/156/185/186/145/176等号段号码:
方式1:^(130 | 131 | 132 | 155 | 156 | 185 | 186 | 145 | 176)\d{8}$
方式2:^( (13[0-2]) | (15[56]) | (18[5-6) | 145 | 176 )\d{8}$
参考:
1、https://www.zhihu.com/question/48219401/answer/742444326
2、https://tool.oschina.net/uploads/apidocs/jquery/regexp.html