如何在 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”标志获取所有组。
在第二部分中,我们在正则表达式内创建了组。之后,我们匹配这些组。对于每次匹配,我们都可以获取组的值,如示例中所示。