如何在 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”標誌獲取所有組。
在第二部分中,我們在正則表示式內建立了組。之後,我們匹配這些組。對於每次匹配,我們都可以獲取組的值,如示例中所示。