在 ES10 中,新增了一个针对字符串的方法 String.prototype.matchAll()
,该方法可以在一个字符串中查找所有匹配某个正则表达式的子串,并返回一个迭代器,该迭代器包含所有匹配到的子串及其对应的匹配信息。
语法
str.matchAll(regexp)
其中,str
是被搜索的字符串,regexp
是用于匹配的正则表达式。
返回值
matchAll()
方法返回一个迭代器,该迭代器包含所有匹配到的子串及其对应的匹配信息。
用法示例
const str = 'Hello, world! How are you doing?'; const regexp = /[a-z]+/g; const matches = str.matchAll(regexp); for (const match of matches) { console.log(match[0], match.index); }
在上面的示例中,我们首先定义了一个字符串 str
和一个正则表达式 regexp
,然后使用 matchAll()
方法查找所有匹配 regexp
的子串,并将它们存储在一个迭代器 matches
中。
接着,我们使用 for...of
循环遍历迭代器 matches
,并输出每个匹配到的子串及其在原字符串中的索引位置。
输出结果如下:
"ello" 1 "world" 7 "ow" 13 "are" 17 "you" 21 "doing" 25
指导意义
String.prototype.matchAll()
方法为我们提供了一种更方便、更高效的方式来查找字符串中的所有匹配项。相比于 String.prototype.match()
方法,它不仅可以返回第一个匹配项,而是可以返回所有匹配项,并且还可以提供更详细的匹配信息。
在实际开发中,我们经常需要在字符串中查找符合某种规则的子串,例如搜索引擎中的关键词匹配、文本编辑器中的查找替换等。使用 String.prototype.matchAll()
方法可以帮助我们更轻松地完成这些任务。
总结
String.prototype.matchAll()
方法是 ES10 中新增的一个字符串方法,用于查找一个字符串中所有匹配某个正则表达式的子串,并返回一个迭代器,该迭代器包含所有匹配到的子串及其对应的匹配信息。使用该方法可以更方便、更高效地查找字符串中的匹配项,特别适用于搜索引擎、文本编辑器等实际开发场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/663dabbcd3423812e4bbd530