在正则表达式里经常会使用到分组模式,如果分组比较多,读写和维护不太方便,因此具名分组就比较适用了。今天学习一下正则表达式的具名捕获组:
具名捕获组
- 它允许你为捕获组指定一个名称,以便在匹配成功后可以通过名称来引用捕获的内容。
- 具名捕获组可以提高正则表达式的可读性和可维护性,特别是在处理复杂的正则表达式时。
- 语法:(?
pattern) - 示例
//示例一
const regex = /(?\d{4})-(?\d{2})-(?\d{2})/;
const match = regex.exec('2025-01-10');
console.log(match.groups.year); // 输出: 2025
console.log(match.groups.month); // 输出: 01
console.log(match.groups.day); // 输出: 10
//示例二
//提取文本内所有日期
let dates = `
aa 2024-01-01 sfdsdf,
dsd 2024-01-02 dfsdf,
dfsd 2024-01-03 sdd,
adfsd 2024-01-04 dd,
aa 2024-01-05 fff,
`;
let regexp = /(?\d{4})-(?\d{2})-(?\d{2})/gm;
let match = regexp.exec(dates);
do {
console.log(`year: ${match.groups.year} ,months:${match.groups.month} ,day:${match.groups.day}`);
} while ((match = regexp.exec(dates)) !== null);
// year: 2024 ,months:01 ,day:01
// year: 2024 ,months:01 ,day:02
// year: 2024 ,months:01 ,day:03
//year: 2024 ,months:01 ,day:04
//year: 2024 ,months:01 ,day:05
结合match方法,通过匹配成功之后返回的对象的groups属性可用很直观的分组信息