JavaScript String matchAll() 方法



JavaScript String matchAll() 方法檢索當前字串中與指定正則表示式 (regex) 匹配的所有結果的迭代器。但是,如果指定的正則表示式在當前字串中找不到任何匹配項,則它將返回一個空迭代器。

如果正則表示式不包含“g”標誌或未設定全域性 (g) 標誌,則會丟擲“TypeError”異常。

語法

以下是 JavaScript String matchAll() 方法的語法:

matchAll(regexp)

引數

此方法接受一個名為“regexp”的引數,如下所述:

  • regexp - 它是一個正則表示式物件。

返回值

此方法返回當前字串中匹配項的迭代器,如果未找到任何匹配項,則返回空迭代器。

示例 1

如果指定的正則表示式匹配此字串,它將返回一個包含此字串中所有匹配結果的迭代器。

在以下程式中,我們使用 JavaScript String matchAll() 方法檢索與該字串“TutorialsPointTuto”匹配的所有結果的迭代器,並針對指定的正則表示式/Tuto/g

<html>
<head>
<title>JavaScript String matchAll() Method</title>
</head>
<body>
<script>
   const str = "TutorialsPointTuto";
   document.write("String: ", str);
   const regex =/Tuto/g;
   document.write("<br>Regular expression: ", regex);
   //using the matchAll() function
   const iterator_array = [...str.matchAll(regex)];
   try {
      document.write("<br>An iterator: ", iterator_array);
   } catch (error) {
      document.write("<br>", error);
   } 
</script>
</body>
</html>

輸出

以上程式返回一個迭代器,如下所示:

String: TutorialsPointTuto
Regular expression: /Tuto/g
An iterator: Tuto,Tuto

示例 2

如果指定的正則表示式匹配此字串,它將返回一個迭代器。

以下是 JavaScript String matchAll() 方法的另一個示例。我們使用此方法檢索與該字串“JavaScript”匹配的所有結果的迭代器,並針對指定的正則表示式/java/[A-Z]*/g

<html>
<head>
<title>JavaScript String matchAll() Method</title>
</head>
<body>
<script>
   const str = "JavaScript";
   document.write("String: ", str);
   const regex = /java[A-Z]*/g;
   document.write("<br>Regular expression: ", regex);
   //using the matchAll() function
   const iterator_array = [...str.matchAll(regex)];
   try {
      document.write("<br>An iterator: ", iterator_array);
   } catch (error) {
      document.write("<br>", error);
   }
</script>
</body>
</html>

輸出

執行上述程式後,它將返回一個空迭代器,如下所示:

String: JavaScript
Regular expression: /java[A-Z]*/g
An iterator:

示例 3

如果正則表示式 (regexp) 未設定全域性 (g) 標誌或不包含“g”,則會丟擲'TypeError'異常。

在以下示例中,我們使用 JavaScript String matchAll() 方法檢索與該字串“Hyper Text Markup Language”匹配的所有結果的迭代器,並針對指定的正則表示式/Lan[a-z]*/。由於正則表示式不包含全域性("g"),因此它將丟擲“TypeError”異常。

<html>
<head>
<title>JavaScript String matchAll() Method</title>
</head>
<body>
<script>
   const str = "Hyper Text Markup Language";
   document.write("String: ", str);
   const regex = /Lan[a-z]*/;
   document.write("<br>Regular expression: ", regex);
   //using the matchAll() function
   try {
      document.write("An iterators: ", str.matchAll(regex));
   } catch (error) {
      document.write("<br>", error);
   }
</script>
</body>
</html>

輸出

上述程式丟擲'TypeError'異常。

String: Hyper Text Markup Language
Regular expression: /Lan[a-z]*/
TypeError: String.prototype.matchAll called with a non-global RegExp argument
廣告