使用 ES10 的 String.prototype.matchAll() 方法匹配多个正则表达式

在前端开发中,我们常常需要使用正则表达式来匹配字符串。而在 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);
}

输出结果:

总结

String.prototype.matchAll() 方法是一个非常实用的字符串方法,可以帮助我们一次性匹配多个正则表达式。在实际开发中,我们可以利用该方法来简化代码,提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6589355beb4cecbf2de73de3


纠错
反馈