聊聊正则表达式

223 阅读2分钟

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.参考资料