如何在 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 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告