String.prototype.matchAll和正则表达式匹配字符串对象方法
String 扩展
String.prototype.matchAll()
matchAll() 方法返回一个包含所有匹配正则表达式及分组捕获结果的迭代器
语法
str.matchAll(regexp)
解释
参数 含义 必选
regexp 正则表达式对象 Y
注意
如果所传参数不是一个正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp
返回值一个迭代器,但是不可重用,结果耗尽需要再次调用方法,获取一个新的迭代器
示例
在了解 matchAll 之前,我们回顾下 ES10 之前一共有多少种正则全部遍历的方法。
RegExp.prototype.exec() with /g
如何用一个正则表达式来得到所有匹配项,可以使用exec与g修饰符,如果正则表达式有/g标志,那么多次调用.exec()就会得到所有匹配的结果。 如果没有匹配的结果,.exec()就会返回null。在这之前会返回每个匹配的匹配对象。 这个对象包含捕获的子字符串和更多信息。
const str = `
<html>
<body>
<div>第一个div</div>
<p>这是一个p</p>
<span>span</span>
<div>第二个div</div>