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正则分组&引用的主要内容,如果未能解决你的问题,请参考以下文章

正则 : 分组与引用

python正则表达式--分组后向引用前(后)向断言

正则表达式 - 分组分组引用反向引用多选非捕获分组

正则表达式入门选择,分组和向后引用

一起学习正则表达式分组与引用

正则表达式括号的作用