在 ES12 中,新增了一个字符串方法 matchAll()
,它可以返回一个迭代器,用于匹配字符串中所有满足条件的子串。这个方法非常有用,可以方便地处理字符串中的多个匹配项。本文将详细介绍 matchAll()
的使用方法和示例。
matchAll()
方法的介绍
在 ES12 中,字符串对象新增了 matchAll()
方法,它接受一个正则表达式作为参数,返回一个迭代器,用于匹配字符串中所有满足条件的子串。这个方法返回的迭代器可以用于遍历所有匹配项,每个匹配项包含了匹配的字符串、匹配开始位置和匹配结束位置等信息。
matchAll()
方法的语法如下:
--------------------
其中,str
是要匹配的字符串,regexp
是一个正则表达式,用于匹配字符串中的子串。
matchAll()
方法的使用示例
下面是一个使用 matchAll()
方法的示例代码,它匹配字符串中的所有数字,并输出每个数字的位置和值:
----- --- - ------------- ----- ------ - ------- ----- ------- - --------------------- --- ------ ----- -- -------- - --------------------- ----------- -- -------- ----------------- -
输出结果为:
-------- - -- -------- - -------- - -- -------- - -------- - -- -------- - -------- - -- -------- - -------- - -- -------- -
在上面的示例中,首先定义了一个字符串 str
和一个正则表达式 /\d+/g
,用于匹配字符串中的数字。然后使用 matchAll()
方法获取一个迭代器 matches
,用于遍历所有匹配项。最后使用 for...of
循环遍历迭代器,输出每个匹配项的位置和值。
matchAll()
方法的注意事项
在使用 matchAll()
方法时,需要注意以下几点:
matchAll()
方法返回的迭代器是惰性求值的,只有在使用for...of
循环遍历迭代器时才会执行匹配操作。matchAll()
方法返回的匹配项中包含了匹配开始位置和匹配结束位置等信息,可以通过match.index
和match.input
属性获取。如果正则表达式中使用了捕获组,那么匹配项中还会包含每个捕获组匹配的字符串,可以通过
match[1]
、match[2]
等属性获取。matchAll()
方法返回的迭代器是不可重用的,即遍历一次后就不能再次遍历,需要重新调用matchAll()
方法获取新的迭代器。
总结
matchAll()
方法是 ES12 中新增的一个字符串方法,用于匹配字符串中所有满足条件的子串。它返回一个迭代器,可以方便地遍历所有匹配项。在使用 matchAll()
方法时,需要注意迭代器是惰性求值的、匹配项中包含了位置和捕获组等信息、迭代器是不可重用的等问题。掌握了 matchAll()
方法的使用方法,可以方便地处理字符串中的多个匹配项,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/660d1c3ed10417a222d82927