JavaScript String matchAll() 方法检索与当前字符串中的指定正则表达式 (regex) 匹配的所有结果的迭代器。但是,如果指定的正则表达式在当前字符串中找不到任何匹配项,它将返回一个空迭代器。
如果正则表达式不包含 “g” 标志或未设置全局 (g) 标志,它将引发 “TypeError” 异常。
语法
以下是 JavaScript String matchAll() 方法的语法 -
matchAll(regexp)
参数
此方法接受一个名为 'regexp' 的参数,如下所述 -
- regexp − 它是一个正则表达式对象。
返回值
此方法返回当前字符串中匹配项的迭代器,如果未找到匹配项,则返回空迭代器。
示例 1
如果指定的正则表达式与此字符串匹配,它将返回一个迭代器,其中包含此字符串中匹配的所有结果。
在下面的程序中,我们使用 JavaScript String matchAll() 方法检索与指定正则表达式 /Tuto/g 匹配此字符串 “QikepuComTuto” 的所有结果的迭代器。
<html>
<head>
<title>JavaScript String matchAll() Method</title>
</head>
<body>
<script>
const str = "QikepuComTuto";
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>
输出
上面的程序返回一个迭代器,作为 −
Regular expression: /Tuto/g
An iterator: Tuto
示例 2
如果指定的正则表达式与此字符串不匹配,它将返回一个空迭代器。
以下是 JavaScript String matchAll() 方法的另一个示例。我们使用此方法针对指定的正则表达式 /java/[A-Z]*/g 检索此字符串 “JavaScript” 中所有结果匹配项的迭代器。
<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>
输出
执行上述程序后,它将返回一个空的迭代器作为 -
Regular expression: /java[A-Z]*/g
An iterator:
示例 3
如果正则表达式 (regexp) 没有设置全局 (g) 标志或不包含 “g”,它将引发 'TypeError' 异常。
在以下示例中,我们使用 JavaScript String matchAll() 方法检索与指定正则表达式 /Lan[a-z]*/ 匹配此字符串 “Hyper Text Markup Language” 的所有结果的迭代器。由于正则表达式不包含 global(“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' 异常。
Regular expression: /Lan[a-z]*/
TypeError: String.prototype.matchAll called with a non-global RegExp argument