1.什么是正则
正则表达式(Regular Expression):是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象
2.使用场景
使用场景:正则通常用于匹配、替换、提取那些符合正则表达式的文本
-
表单校验中的校验规则功能
-
过滤敏感词的替换功能
-
字符串中提取我们想要的部分
3.正则表达式的组成
- 普通字符 abc 中国 123 等
- 特殊字符(元字符、限定符、中括号):正则表达式中有特殊意义的字符。
4.元字符
元字符就是在正则表达式中具有特殊含义的字符。
| 元字符 | 说明 |
|---|---|
| \d | 匹配数字 |
| \D | 匹配非数字 |
| \w | 匹配字母或数字或下划线_ |
| \W | 匹配非字母、数字、下划线_ |
| \s | 匹配空白符(空格) |
| \S | 匹配非空白符 |
| . | 匹配任意除了换行符(回车键)之外的单个字符 |
5.限定符
限定符就是控制字符出现的次数,对字符个数限制
| 限定符 | 说明 |
|---|---|
| n* | 匹配任何包含零个或者多个n的字符串。n{0,} |
| n+ | 匹配任何包含至少一个n的字符串。n{1,} |
| n? | 匹配任何包含零个或一个n的字符串。{0,1} |
| n{x} | 匹配包含x个n的序列的字符串。 |
| n{x,} | 匹配包含至少x个n的序列的字符串。 |
| n{x,y} | 匹配包含至少x个至多y个n的序列的字符串。 |
| n$ | 匹配任何结尾为n的字符串。 |
| ^n | 匹配任何开头为n的字符串。 |
6.中括号
一个中括号就代表一个字符串,中括号的目的解视控制一个字符的范围。
| 中括号 | 说明 |
|---|---|
| [abc] | 查找一个括号之间的任何字符。 |
| [^abc] | 查找一个任何不在方括号之间的字符,^在中括号中有取反的意思。 |
| [0-9] | 查找一个任何从0至9的数字。 |
| [a-z] | 查找一个任何从小写a到小写z的字符。 |
| [A-Z] | 查找一个任何从大写A到大写Z的字符。 |
| [A-z] | 查找一个字母(包含大小写和下划线)。 |
| [[\u4e00-\u9fa5]] | 查找一个汉字。 |
在匹配时,从前向后按照【规则】去找,若是全局匹配,前面若有满足项时,后面再匹配时,从满足项下一个开始匹配。
7.修饰符
修饰符:约束正则执行的某些细节行为,如:是否区分大小写、是否支持多行匹配等
-
i是单词ignore的缩写,正则匹配时字母不区分大小写
-
g是单词global的缩写,匹配所有满足正则表达式的结果
-
替换replace替换 例:字符串.replace(/正则表达式/,"替换的文本")
8.常见的正则
- 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
- 身份证号(15位、18位数字):^\d{15}|\d{18}$
- 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
- 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
- QQ号(从10000开始):[1-9][0-9]{4,}
9.参考资料
- 参考文档 MDN:developer.mozilla.org/zh-CN/docs/…
- 备忘查询手册:tool.oschina.net/uploads/api…