在 ECMAScript 2020(ES11)中,新增了一个非常实用的方法:String.prototype.matchAll。该方法可以在字符串中查找所有匹配正则表达式的子字符串,并返回一个迭代器对象。
用法
String.prototype.matchAll 方法接收一个正则表达式作为参数,并返回一个迭代器对象。我们可以通过 for...of 循环来遍历迭代器对象,获取所有匹配结果。
----- --- - ------ -------- ----- ------ - ------- ----- ------- - --------------------- --- ------ ----- -- -------- - ------------------- -
输出结果为:
--------- ------ -- ------ ------ -------- ------- ---------- --------- ------ -- ------ ------ -------- ------- ----------
每个匹配结果都是一个数组,包含匹配到的子字符串、匹配到的位置、原始字符串和未命名捕获组。
指导意义
String.prototype.matchAll 方法的出现,解决了在 ES6 中 String.prototype.match 方法的一个限制。在 ES6 中,String.prototype.match 方法只能返回第一个匹配结果。如果我们需要获取所有匹配结果,就需要使用一个循环来重复调用该方法。
----- --- - ------ -------- ----- ------ - ------- --- ------ ----- ------- - ----------------- --- ----- - ------------------- -
输出结果和上面的示例代码相同:
--------- ------ -- ------ ------ -------- --------- ------ -- ------ ------ --------
String.prototype.matchAll 方法的出现,让获取所有匹配结果变得更加简单和直观。
示例代码
下面是一些使用 String.prototype.matchAll 方法的示例代码。
获取所有匹配结果
----- --- - ------ -------- ----- ------ - ------- ----- ------- - --------------------- --- ------ ----- -- -------- - ------------------- -
获取所有匹配结果的位置
----- --- - ------ -------- ----- ------ - ------- ----- ------- - --------------------- --- ------ ----- -- -------- - ------------------------- -
获取所有匹配结果的长度
----- --- - ------ -------- ----- ------ - ------- ----- ------- - --------------------- --- ------ ----- -- -------- - ----------------------------- -
使用捕获组
----- --- - ------------- ----- ------ - -------------------------- ----- ------- - --------------------- --- ------ ----- -- -------- - --------------------- --------- ---------- -
输出结果为:
---- -- --
总结
String.prototype.matchAll 方法的出现,让获取所有匹配结果变得更加简单和直观。如果我们需要在字符串中查找所有匹配正则表达式的子字符串,可以使用该方法来实现。同时,我们也可以使用捕获组来获取匹配结果中的特定部分。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/655d1389d2f5e1655d75be92