在前端开发中,我们常常需要使用正则表达式来匹配字符串。而在 ES10 中,新增了一个非常实用的方法 String.prototype.matchAll()
,它可以帮助我们一次性匹配多个正则表达式。
什么是 String.prototype.matchAll() 方法
String.prototype.matchAll()
方法是 ES10 中新增的一个字符串方法,它可以一次性匹配多个正则表达式,并返回一个迭代器对象,可以通过 for...of
循环来遍历匹配结果。
如何使用 String.prototype.matchAll() 方法
使用 String.prototype.matchAll()
方法非常简单,只需要在字符串上调用该方法,并传入一个正则表达式即可:
const str = 'Hello, world!'; const regExp = /[a-z]/g; const matchResult = str.matchAll(regExp); console.log(matchResult); // 返回一个迭代器对象
接下来,我们可以通过 for...of
循环来遍历匹配结果:
for (const match of matchResult) { console.log(match); // 返回匹配结果的详细信息 }
String.prototype.matchAll() 方法的返回值
String.prototype.matchAll()
方法返回的是一个迭代器对象,我们可以通过 for...of
循环来遍历该迭代器对象,获取每个正则表达式的匹配结果。
每个匹配结果都是一个数组,包含以下信息:
0
:匹配到的完整字符串index
:匹配到的字符串在原字符串中的起始位置groups
:如果正则表达式中包含命名捕获组,则会返回一个对象,包含每个命名捕获组的键值对
示例代码
下面是一个使用 String.prototype.matchAll()
方法的示例代码:
const str = 'Hello, world!'; const regExp = /[a-z]/g; const matchResult = str.matchAll(regExp); for (const match of matchResult) { console.log(match[0], match.index); }
输出结果:
H 0 e 1 l 2 l 3 o 4 w 7 o 8 r 9 l 10 d 11
总结
String.prototype.matchAll()
方法是一个非常实用的字符串方法,可以帮助我们一次性匹配多个正则表达式。在实际开发中,我们可以利用该方法来简化代码,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6589355beb4cecbf2de73de3