在 ECMAScript 2020(也称为 ES11)中,新增了一个非常有用的字符串方法:String.prototype.matchAll()。该方法可以在字符串中查找所有匹配某个正则表达式的子串,并返回一个迭代器,可以通过该迭代器遍历所有匹配结果。
语法
String.prototype.matchAll(regexp)
参数:一个正则表达式
返回值:一个迭代器,可以通过该迭代器遍历所有匹配结果
示例
// javascriptcn.com 代码示例 const str = 'Hello, world! Hello, JavaScript!'; const regex = /Hello, (\w+)!/g; const matches = str.matchAll(regex); for (const match of matches) { console.log(match[1]); }
输出:
world JavaScript
在上面的示例中,我们定义了一个字符串 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