上一篇:正则中需要注意的[]细节
正则中()分组的作用
- 改变默认的优先级
- 分组 捕获
- 分组的引用
-
改变优先级
let reg=/^18|19$/; //以18开头,或19结尾或1开头或9结尾 console.log(reg.test('18'))//true console.log(reg.test('19'))//true console.log(reg.test('189'))//true console.log(reg.test('181'))//true let reg=/^(18|19) $/; //以18开头或结尾,19结尾或开头 console.log(reg.test('18'))//true console.log(reg.test('19'))//true console.log(reg.test('189'))//false console.log(reg.test('181'))//false
-
分组的引用
let reg=/^([a-z])([a-z])\2\1$/; //正则中出现的\1代表和第1个分组出现一模一样的内容 console.log(reg.test('oppo'))//true console.log(reg.test('poop'))//true
-
分组的捕获
//=>需求: 编写一个正则匹配身份证号码 let reg=/^\d{17}(\d|x)$/;//简单: 只能匹配是否符合格式,不能提取出身份证中的一些信息 //=>130126 地域 //=>19960814 出生年月 //=> 3034 倒数第二位: 奇数=男 偶数=女 let reg=/^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(?:\d|x)$/;//(?:只匹配不捕获) console.log(reg.exec('130126199608143034'))//EXEC实现的事正则的捕获,捕获的结果是一个数组,如果不匹配获取的结果是null,捕获的时候不仅把大正则匹配的信息捕获到,而且每一个小分组中的内容也捕获到了(分组捕获)["130126199608143034", "130126", "1996", "08", "14", "3", "4", index: 0, input: "130126199608143034", groups: undefined]
-
总结
- 如果可以匹配获取的结果是一个数组,如果不能匹配获取的结果是一个null
- 如果我们只在匹配的时候,想要获取大正则中的部分信息,我们可以把这部分使用小括号包起来,形成一个小分组,这样在捕获的时候,不仅可以把大正则【匹配的信息捕获到,而且还单独的把小分组匹配的部分信息捕获到了(分组捕获)
- 有时候写小分组不是为了捕获信息,只是为了改变优先级或者进行分组引用,此时我们可以在分组的前面加上’?:‘,代表支取匹配,但是不把这个分组内容捕获
下一篇:正则常用的表达式