前言
在正则中我们经常碰到括号,括号是个重要的符号,它有着不同的作用,值得我们去研究一下,本节我们就来学习一下。
括号
首先括号的作用是分组与分支,简单来说就是把括号内的表达式当成整体,就是数学符号中的作用。
- 分组:将字符当成一个个小组,括号内的字符就是整体,用量词去匹配的时候会匹配整体。
const str = '12 123 1234';
const reg = /(12)+/g;
console.log(str.match(reg));//['12','12','12']
- 分支:多种情况用|连接,外面需要用括号包裹。
const str = '12 123';
const reg = /(12|3)/g;
console.log(str.match(reg));//['12', '12', '3']
这两种可以说是最直观的作用,除此之外还有引用作用,这个作用很重要,在此之前我们需要了解下match方法的返回值。 当正则中没有g时,match方法返回匹配的数组,其中index为0的是匹配结果,后面是每个分组匹配的字符,这是括号引用作用的体现,我们可以看一个例子:匹配年月日字符串中的年份,这个正则非常简单,我们先不加括号匹配一下。
const str = '2023年06月08日';
const reg = /\d{4}年/;
console.log(str.match(reg));
我们把匹配结果的年字去掉就能得到想要的结果,这是我们加个括号:
const reg = /(\d{4})年/;
“2023”出现在数组里面,取result[1]就能得到我们想要的结果,这就是我们说的引用作用。引用作用原理就是正则在匹配时碰到括号时,会专门给每个分组开辟空间来存储匹配到的结果。
总结
以上就是括号的三个作用,尤其是引用作用,知道了之后可以提高我们的开发效率。