正则学习(六)——括号作用

170 阅读2分钟

前言

在正则中我们经常碰到括号,括号是个重要的符号,它有着不同的作用,值得我们去研究一下,本节我们就来学习一下。

括号

首先括号的作用是分组与分支,简单来说就是把括号内的表达式当成整体,就是数学符号中的作用。

  • 分组:将字符当成一个个小组,括号内的字符就是整体,用量词去匹配的时候会匹配整体。
   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));

image.png

我们把匹配结果的年字去掉就能得到想要的结果,这是我们加个括号:

   const reg = /(\d{4})年/;

image.png

“2023”出现在数组里面,取result[1]就能得到我们想要的结果,这就是我们说的引用作用。引用作用原理就是正则在匹配时碰到括号时,会专门给每个分组开辟空间来存储匹配到的结果。

总结

以上就是括号的三个作用,尤其是引用作用,知道了之后可以提高我们的开发效率。