持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
正则表达式是什么
- 表达式
对字符串进行逻辑匹配运算 - 内置对象
js语言提供好的对象,直接使用即可,存储一些对字符串进行匹配运算的方法
正则表达式的作用
对字符串进行逻辑匹配运算(格式校验)
正则表达式使用流程
-
声明正则对象
let reg = new RegExp(/正则表达式/)
-
调用对象test方法
reg.test('要校验的字符串')
true符合规则
false不符合规则
正则表达式语法由两部分组成
原义文本字符
字符串本身的含义
别想太多,写什么就是什么
console.log(/魔王/.test('魔大王')) //false
console.log(/魔王/.test('大王魔')) //false
console.log(/魔王/.test('大魔王')) //true
元字符
改变了字符串本身的含义,类似于js中的关键字
-
字符类
[] 字符类 将某种特征的字符串归为一类
/[abc]/:将 a 或 b 或 c 这种字符归为一类 说人话:检测字符串有没有 a 或 b 或 c 有任意一个即可 返回 true[^] 反向类 将不是某种特征的字符串归为一类
/[abc]/:将 不是a 或 不是b 或 不是c 这种字符归为一类 说人话:检测字符串有没有除了 a 或 b 或 c 以外的字符 有任意一个即可 返回 true -
范围类
代表字符的范围
/[0-9]/:检测有没有数字字符 /[a-z]/:检测有没有小写字母 /[A-Z]/:检测有没有大写字母范围类可以连写
/[a-zA-Z0-9]/:检测字符串有没有字母或数字 复制代码范围类是一个闭区间
/[5,8]/:检测有没有5到8之间的数据,包含5和8范围类 右边 一定大于左边
/[8-5]/:会报错 /[8-90-5]/: 包含 8 9 0 1 2 3 4 5 -
预定义类
预定义类 等价类 含义 . [^\r\n] 除了回车和换行之外的所有字符 \d [0-9] 数字字符 \D [^0-9] 非数字字符 \s [\f\n\r\t\v] 空白字符 \S [^\f\n\r\t\v] 非空白字符 \w [a-zA-Z_0-9] 单词字符 \W [^a-zA-Z_0-9] 非单词字符 -
边界
正则表达式提供了几个常用的边界匹配字符
边界字符 含义 ^ 以xxx开头 $ 以xxx结束 \b 单词边界 \B 非单词边界正则表达式元字符含义可能不止一种,会有多种含义
^正则严格匹配$
-
量词
检查字符出现的次数
? 出现零次或一次(最多出现一次) + 出现一次或多次(至少出现一次) * 出现零次或多次(任意次) {n} 出现n次 {n,m} 出现n-m次 {n,} 出现至少n次 -
分组
- () 默认情况下量词只能对一个字符生效 用括号包住的部分就是整体
- | 提升优先级 在正则中表示或
- 反向引用 正则表达式在匹配的时候,会自动把()内部匹配到的数据提取到RegExp的¥变量中(1−1-1−9)
-
修饰
g global 全局匹配 i intensity 区分大小写 m multiple 检测换行用于边界