ECMAScript 2020 (ES11) 中的 String.prototype.matchAll 方法

在 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


纠错
反馈