命名捕获分组
命名捕获分组之前的做法
//命名捕获分组之前的做法
//声明一个字符串
let str = '<a href="http://www.1233211234567.com">123</a>';
//提取url与【标签文本】
const reg = /<a href="(.*)">(.*)<\/a>/;
//执行
const result = reg.exec(str);
console.log(result);
命名捕获分组
let str = '<a href="http://www.1233211234567.com">123</a>';
const reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
const result = reg.exec(srt);
console.log(result);
反向断言
//声明字符串
let str = "JS123678你知道吗555啦啦啦";
//正向断言
const reg = /\d+(?=啦)/;
const result = reg.exec(str);
console.log(result);
//反向断言
const reg = /(?<=吗)\d+/;
const result = reg.exec(str);
console.log(result);
dotAll模式
之前
//dot . 元字符 除换行符以外的任意字符
let str = `
<ul>
<li>
<a>肖生克的救赎</a>
<p>上映时间:1994-09-10</p>
</li>
<li>
<a>阿甘正传</a>
<p>上映时间:1994-07-06</p>
</li>
</ul> `;
//声明正则
const reg = /<li>\s+<a>(.*?)<\/a>\s+<p>(.*?)<\/p>/;
const result = reg.exec(str);
console.log(result);
之后
const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs;
let result;
let data = [];
while ((result = reg.exec(str))) {
data.push({ title: result[1], time: result[2] });
}
console.log(data);