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