在 ES9 中使用 String.prototype.matchAll() 遍历正则表达式的全部匹配结果
在前端开发中,经常会使用到正则表达式来进行字符串匹配和替换。在 ES9 中,新增了 String.prototype.matchAll() 方法,可以方便地遍历正则表达式的全部匹配结果。
使用 String.prototype.matchAll() 方法,可以返回一个迭代器对象,通过遍历这个迭代器对象,我们可以依次获取到所有的匹配结果。这个迭代器对象包含了多个属性,其中最重要的是 value 和 done 属性。value 属性表示当前匹配到的结果,done 属性表示是否遍历完成。
下面是一个示例代码,演示如何使用 String.prototype.matchAll() 方法:
// javascriptcn.com 代码示例 const str = "hello world! hello javascript! hello es9!"; const regex = /hello (\w+)/g; const matches = str.matchAll(regex); for (const match of matches) { console.log(match[0]); // 匹配到的完整字符串,比如 "hello world!" console.log(match[1]); // 匹配到的第一个分组,比如 "world" console.log(match.index); // 匹配到的位置,比如 0 console.log(match.input); // 匹配的原始字符串,比如 "hello world! hello javascript! hello es9!" }
在上面的示例代码中,我们首先定义了一个字符串 str 和一个正则表达式 regex。然后,我们使用 str.matchAll(regex) 方法获取到一个迭代器对象 matches。接着,我们使用 for...of 循环遍历这个迭代器对象,依次获取到所有的匹配结果。
在循环中,我们可以通过 match[0] 获取到匹配到的完整字符串,通过 match[1] 获取到匹配到的第一个分组,通过 match.index 获取到匹配到的位置,通过 match.input 获取到匹配的原始字符串。
总结
在 ES9 中,使用 String.prototype.matchAll() 方法可以方便地遍历正则表达式的全部匹配结果。这个方法的使用非常简单,只需要传入一个正则表达式,就可以获取到一个迭代器对象,通过遍历这个迭代器对象,我们可以依次获取到所有的匹配结果。在实际开发中,我们可以使用这个方法来方便地处理字符串匹配和替换的问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655898d4d2f5e1655d2c86ac