ECMAScript 2020 (ES11) 新特性:String.prototype.matchAll()

在 ECMAScript 2020(也称为 ES11)中,新增了一个非常有用的字符串方法:String.prototype.matchAll()。该方法可以在字符串中查找所有匹配某个正则表达式的子串,并返回一个迭代器,可以通过该迭代器遍历所有匹配结果。

语法

String.prototype.matchAll(regexp)

参数:一个正则表达式

返回值:一个迭代器,可以通过该迭代器遍历所有匹配结果

示例

输出:

在上面的示例中,我们定义了一个字符串 str 和一个正则表达式 regex,该正则表达式匹配所有以 Hello, 开头、以 ! 结尾的子串,并将 Hello, 后面的单词捕获为分组。

然后,我们使用 String.prototype.matchAll() 方法在字符串 str 中查找所有匹配 regex 的子串,并将其返回为一个迭代器 matches

最后,我们使用 for...of 循环遍历迭代器 matches,并输出每个匹配结果的第一个分组。

指导意义

使用 String.prototype.matchAll() 方法可以方便地在字符串中查找所有匹配某个正则表达式的子串,并对每个匹配结果进行操作。这对于一些需要对字符串进行复杂操作的场景非常有用,比如解析 HTML、提取数据等等。

此外,该方法返回的迭代器可以与其他迭代器结合使用,比如 Array.prototype.map()Array.prototype.filter() 等,可以更加方便地对匹配结果进行处理。

总结

在 ECMAScript 2020 中,新增了一个非常有用的字符串方法:String.prototype.matchAll()。该方法可以在字符串中查找所有匹配某个正则表达式的子串,并返回一个迭代器,可以通过该迭代器遍历所有匹配结果。使用该方法可以方便地对字符串进行复杂操作,同时也可以与其他迭代器结合使用,更加方便地对匹配结果进行处理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650a819595b1f8cacd4dbffe


纠错
反馈