对一个html中进行捕获,捕获多个内容:
const str=` <ul>
<li>
<a>aaaa</a>
<p>1111</p>
</li>
<li>
<a>aaaa</a>
<p>1111</p>
</li>
</ul>`
const reg=/<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs
// g是全局
// .是匹配除了换行符以外的任意单个字符
// .*是0-n个任意字符,.*?是懒惰模式的匹配
let resutl
let data=[]
while( resutl=reg.exec(str)){ // 循环捕获,会一直往下进行,直到返回null
data.push({title:resutl[1],time:resutl[2]})
}
// 如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素 是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本,第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本。
data:[ { title: 'aaaa', time: '1111' }, { title: 'aaaa', time: '1111' } ]
在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。