js正则分组&引用
Posted jingouli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则分组&引用相关的知识,希望对你有一定的参考价值。
分组
/(\d4)-(\d2)-(\d2)/.test(‘2019-08-25‘) // true RegExp.$1=‘2019‘ RegExp.$2=‘08‘ RegExp.$3=‘25‘ RegExp.$4=‘‘ RegExp.$_=‘2019-08-05‘ // 最多到RegExp.$9,没有$10,这本身是js的坑 // 解决: ‘2019-08-25‘.match(/(\d4)-(\d2)-(\d2)/); // 0: "2019-08-25" // 1: "2019" // 2: "08" // 3: "25" // groups: undefined // index: 0 // input: "2019-08-25" // length: 4
ES2018对正则(分组)的扩展:
‘2019-08-25‘.match(/(?<year>\d4)-(?<month>\d2)-(?<day>\d2)/) // 0: "2019-08-25" // 1: "2019" // 2: "08" // 3: "25" // groups: year: "2019", month: "08", day: "25" // index: 0 // input: "2019-08-25" // length: 4
引用
‘2019-08-25‘.match(/(\d4)-(\d2)-\2/) // null ‘2019-08-08‘.match(/(\d4)-(\d2)-\2/) // 不为null // 最后一个 ‘\2‘ 是对第二个的引用 // ES2018引用 ‘2019-08-25‘.match(/(?<year>\d4)-(?<month>\d2)-\k<month>/) // null ‘2019-08-08‘.match(/(?<year>\d4)-(?<month>\d2)-\k<month>/) // 不为null
‘2019-08-25‘.replace(/(\d4)-(\d2)-(\d2)/,`year($1),month($2)`) // "year(2019),month(08)" // $1,$2是对前两个匹配字符串的引用
以上是关于js正则分组&引用的主要内容,如果未能解决你的问题,请参考以下文章