在 ECMAScript 2020 中,新增了 String.prototype.matchAll()
方法,它可以在字符串中查找所有匹配某个正则表达式的子串,并以迭代器的形式返回匹配结果。本文将详细介绍这个新特性的创建、用法及其指导意义。
创建
在 ES2020 中,新增了 String.prototype.matchAll()
方法。它的语法如下:
string.matchAll(regexp)
其中,string
是要查找的字符串,regexp
是一个正则表达式,用于匹配子串。
用法
String.prototype.matchAll()
方法返回一个迭代器,它包含了所有匹配结果。每个匹配结果是一个数组,数组的第一个元素是匹配的子串,后面的元素是正则表达式中的捕获组。
下面是一个示例代码:
const str = 'hello world'; const regexp = /(\w+)\s(\w+)/g; const matches = str.matchAll(regexp); for (const match of matches) { console.log(match); }
运行上面的代码,输出如下:
["hello world", "hello", "world"]
上面的输出中,第一个元素是匹配的子串,后面的元素是正则表达式中的捕获组。
指导意义
String.prototype.matchAll()
方法的出现,使得在字符串中查找所有匹配某个正则表达式的子串变得更加容易。在以前,我们需要使用 RegExp.prototype.exec()
方法来实现这个功能,但是这个方法只能返回第一个匹配结果,如果需要查找所有匹配结果,就需要使用一些循环来实现。而使用 String.prototype.matchAll()
方法,我们只需要一行代码就可以得到所有匹配结果。
总结
在 ECMAScript 2020 中,新增了 String.prototype.matchAll()
方法,它可以在字符串中查找所有匹配某个正则表达式的子串,并以迭代器的形式返回匹配结果。这个新特性的出现,使得在字符串中查找所有匹配结果变得更加容易,提高了开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657e4912d2f5e1655d91d265