如何在 JavaScript 正则表达式中访问匹配的组?


本教程将教我们如何访问 JavaScript 正则表达式中的匹配组。正则表达式是一系列字符,也称为RegEx,它用于匹配字符串中的特定模式

字符串中特定模式的匹配可能不止一个。为了获取所有匹配的出现次数,我们在本教程中解释了以下不同的方法。

我们还将在本文中了解正则表达式的各种用法。

创建正则表达式时使用“g”标志

当我们在正则表达式中添加“g”作为修饰符时,它将在给定字符串中搜索正则表达式模式的所有出现次数,并返回可迭代对象。我们可以遍历该对象并将其转换为数组以访问所有匹配的组。

语法

用户可以使用以下语法在正则表达式中使用“g”修饰符。

let str = "digit 01, 39 digits";
let regexp = /[0-9]/g;
let group = str.match(regexp);
for (const element of group) {
   index.innerHTML += element + '<br/>';
}

在上述语法中,组是一个可迭代对象,但它不是数组。因此,我们无法直接访问对象中的任何元素。我们可以将其转换为数组或遍历对象并访问每个元素。在这里,我们使用了 for 循环来遍历对象并访问所有元素。

示例

在此示例中,我们创建了一个基本的正则表达式来查找 0 到 9 之间所有数字的出现次数。我们使用了“g”作为修饰符来查找所有元素,它从字符串中返回 0 到 9 之间的所有元素。如果任何数字出现多次,它将返回多次。

我们使用了match()方法来匹配模式的所有出现次数,但用户也可以使用matchAll()方法。

<html>
<head>
   <title> Example - Access all the matched groups in Regular expression.
</title>
</head>
<body>
   <h4> All matching digits between 0 to 9 using 'g' flag </h4>
   <div id="index"> </div>
   <script>
      let index = document.getElementById("index");
      const str = "digit 01, 39 digits";
      const regexp = /[0-9]/g;
      const group = str.match(regexp);
      for (const element of group) {
         index.innerHTML += element + '<br/>';
      }
   </script>
</body>
</html>

在上述输出中,用户可以看到它从给定的字符串中返回 0 到 9 之间的所有元素。

访问命名组

在本节中,我们将在正则表达式内创建一个组并为其指定一个唯一的名称。这将很容易检查特定组的模式是否在字符串中。此外,我们可以获取特定组的所有模式。

语法

用户可以按照以下语法在正则表达式中创建组。

?<group_name> // to add group in the regular expression.
/(?<group1>[0-2]{2})/gi

在上述语法中,用户可以看到我们创建了一个名为 group1 的组,其中包含 0 到 2 之间的数字,长度为 2。

示例

下面的示例演示了在正则表达式中创建组的过程。我们可以使用可迭代对象访问匹配出现次数的组。

<html>
<head>
   <title>Example - Access all the matched groups in Regular expression.
</title>
</head>
<body>
   <h4> Accessing named groups in Regular expression. </h4>
   <div id="index"> </div>
   <script>
      let index = document.getElementById("index");
      const str = "a-1 b-12 c-32 d-40";

      // regular expression to find all occurence of element with length 2 digits.
      let regexp = /(?<name>[a-z])-(?<total>[0-9]{2})/gi;
      const group = str.matchAll(regexp);

      // getting all values from the groups
      for (const element of group) {
         let {
            name,
            total
         } = element.groups;
         index.innerHTML += "name is " + name + ". total number of " + name + " is " + total + '. <br/>';
      }
   </script>
</body>
</html>

结论

在本教程中,我们学习了如何访问正则表达式中所有匹配的出现次数。在第一部分中,我们必须使用 match() 方法查找匹配项,并使用“g”标志获取所有组。

在第二部分中,我们在正则表达式内创建了组。之后,我们匹配这些组。对于每次匹配,我们都可以获取组的值,如示例中所示。

更新于:2022年7月25日

762 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告