ECMAScript 2020 (ECMAScript 11) 新特性:String 的 matchAll() 方法

ECMAScript 2020 是 JavaScript 的最新标准,也称为 ECMAScript 11。其中一个新特性是 String 的 matchAll() 方法。该方法可以方便地从一个字符串中找到所有匹配正则表达式的子串,并返回一个迭代器,以便逐个遍历这些匹配的子串。

matchAll() 方法的用法

matchAll() 方法的基本用法如下:

----- --- - ------ -------
----- ----- - -----
----- ------- - --------------------

--- ------ ----- -- -------- -
  -------------------
-

上面的代码会输出以下结果:

----- ------ -- ------ ------ ------- ------- ----------
----- ------ -- ------ ------ ------- ------- ----------

可以看到,matchAll() 方法返回一个迭代器,每个迭代器包含匹配的子串、匹配的索引、原始字符串和正则表达式的捕获组。可以使用 for...of 循环遍历所有匹配的子串。

matchAll() 方法的指导意义

matchAll() 方法的出现,使得 JavaScript 中处理字符串的能力更加强大。以前,我们需要使用正则表达式的 exec() 方法来查找所有匹配的子串,并使用 while 循环遍历它们。这种方法比较繁琐,代码也比较难以理解。而 matchAll() 方法可以一次性返回所有匹配的子串,使得代码更加简洁、易懂。

matchAll() 方法的示例代码

下面是一些使用 matchAll() 方法的示例代码:

示例 1:查找所有单词

----- --- - ---- ----- ----- --- ----- ---- --- ---- -----
----- ----- - -------
----- ------- - --------------------

--- ------ ----- -- -------- -
  -------------------
-

上面的代码会输出以下结果:

------- ------ -- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
--------- ------ -- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
--------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
--------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
-------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
-------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------
------- ------ --- ------ ---- ----- ----- --- ----- ---- --- ---- ----- ------- ----------

可以看到,上面的代码使用了 /\w+/g 正则表达式来查找所有单词,并使用 matchAll() 方法返回所有匹配的子串。

示例 2:查找所有邮箱地址

----- --- - --- ----- -- ----------------- --- -- --------- ----- -- -------------------
----- ----- - --------------------
----- ------- - --------------------

--- ------ ----- -- -------- -
  -------------------
-

上面的代码会输出以下结果:

-------------------- ------ --- ------ --- ----- -- ----------------- --- -- -------- ----- -- ------------------- ------- ----------
-------------------- ------ --- ------ --- ----- -- ----------------- --- -- -------- ----- -- ------------------- ------- ----------

可以看到,上面的代码使用了 /\b\w+@\w+.\w+\b/g 正则表达式来查找所有邮箱地址,并使用 matchAll() 方法返回所有匹配的子串。

总结

matchAll() 方法是 ECMAScript 2020 中新增的一个字符串方法,它可以方便地从一个字符串中找到所有匹配正则表达式的子串,并返回一个迭代器,以便逐个遍历这些匹配的子串。matchAll() 方法的出现,使得 JavaScript 中处理字符串的能力更加强大。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66165c62d10417a22264d326