ES11 的 matchAll 方法为字符串对象提供了一种高效的方式来搜索多个匹配项,不同于 match 方法只返回第一个匹配项的结果,matchAll 方法可以返回所有匹配项。本文将详细介绍 matchAll 方法的用法和示例。
matchAll 方法介绍
matchAll 方法是字符串对象新增的方法,用于返回一个迭代器,它会迭代出一个字符串中所有能匹配一个正则表达式的子串。具体方法如下:
------------------------
其中,regexp 是一个正则表达式,表示要匹配的模式。
matchAll 方法返回一个迭代器,它包含一个或多个匹配项的信息。每个匹配项都是一个数组对象,包含匹配项的字符串和每个捕获组的值。如果没有匹配项,则返回空迭代器。
matchAll 方法的异步用法
在 ES11 中,matchAll 方法支持异步调用。它返回一个异步迭代器,该迭代器可以用于异步迭代多个匹配项。异步迭代器使用 for-await-of 语句进行控制流,如下所示:
--- ----- ------ ------ -- ------------------------ - -- --- -
在上面的代码中,result 是一个数组,包含了每个匹配项的字符串和每个捕获组的值。整个迭代过程是异步的,可以等待 promise 解析。
匹配多个 URL
我们来看一个实际例子,使用 matchAll 方法匹配多个 URL,并打印出所有匹配项中的主机名和路径。
----- -------- --------------- - ----- -- - ---------------------------------- --- ----- ------ ----- -- ------------------ - ----- ----- ----- ----- - ------ ------------------ -------- ----- ------ -- ------- - - ----------- ---------------------- ---------------------- ------------------------------------ ---
上面的代码中,我们定义了一个 parseUrls 函数,它将以空格分隔的多个 URL 作为输入。通过传递一个正则表达式 (/https?://([^/]+)(/[^\s]*)?/g) 给 matchAll 方法,我们可以提取 URL 中的主机名和路径,并在控制台上打印出它们。运行结果如下:
----- ------------ ----- ---- ----- --------------- ----- - ----- ---------------------- ----- -------
总结
在 ES11 中,matchAll 方法提供了一种高效的方式来搜索多个匹配项。异步 matchAll 方法能够异步迭代多个匹配项,用法与同步 matchAll 方法类似,只是返回一个异步迭代器。在实际开发中,matchAll 方法为我们提供了方便和高效的多模式匹配方式,可以大大提升编写正则表达式的效率和准确性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64b0e07248841e9894d10984