四时宝库

程序员的知识宝库

【JS 正则表达式 四】具名捕获组

在正则表达式里经常会使用到分组模式,如果分组比较多,读写和维护不太方便,因此具名分组就比较适用了。今天学习一下正则表达式的具名捕获组:

具名捕获组

  • 它允许你为捕获组指定一个名称,以便在匹配成功后可以通过名称来引用捕获的内容。
  • 具名捕获组可以提高正则表达式的可读性和可维护性,特别是在处理复杂的正则表达式时。
  • 语法:(?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属性可用很直观的分组信息

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接