Appearance
?: 表示分组的值不捕获 ,但会消耗字符
命名分组
// 11-22 -> 22-11 console.log('11-22'.replace(/(?<x>\d{2})-(?<y>\d{2})/,'$<y>-$<x>'))
正向肯定:往前看就是往右看,必须跟着什么东西。?=不消耗字符(只看不吃)
console.log('1a'.match(/\d(?=[a-z])[a-z]/)) //[ '1a', index: 0, input: '1a', groups: undefined ] console.log('1ab'.match(/\d(?=[a-z]{2})[a-z]/)) //[ '1a', index: 0, input: '1ab', groups: undefined ] console.log('1a'.match(/\d(?=[a-z]{2})[a-z]/)) // null console.log('1a'.match(/\d(?:[a-z])[a-z]/)) //null
正向否定 ?!
console.log('1a'.match(/\d(?![A-Z])[a-z]/)) //[ '1a', index: 0, input: '1a', groups: undefined ]
反向肯定 向左看 ?<=
console.log('c2a'.match(/(?<=[a-z])\d[a-z]/)) //[ '2a', index: 1, input: 'c2a', groups: undefined ]
反向否定 向左看 ?<!
console.log('A2a'.match(/(?<![a-z])\d[a-z]/))