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