捕获
const reg = /I have a (apple|watermelon)/;
reg.test('I have a apple') // RegExp.$1 = 'apple'
利用捕获循环处理字符串
比如去掉’[[[aaa]]]'中的中括号(这里只是举个例,可以这样来处理更复杂的模板字符串)
const reg = /\[([a-zA-z]*)\]/;
let str = '[[[aaa]]]';
while(reg.test(str)){
str = str.replace(reg,"$1")
}
console.log("str",str)
反向引用
这里的\1就是$1
const reg = /([a-z]{2}) is \1/
reg.test('aa is aa') // true
reg.test('aa is bb') // false
非捕获型
使用?:后不会进行捕获
const reg = /(?:\d{4})-(\d{2})-(\d{2})/
let date = '2021-03-01'
reg.test(date)
RegExp.$1 // 12
RegExp.$2 // 21
正向前瞻
const reg = /aa is a (?=bb)/
reg.test('aa is a bb') // true
reg.test('aa is a cc') // false
反向前瞻
反向前瞻和正向前瞻的结果是相反的
const reg = /aa is a (?!bb)/
reg.test('aa is a bb') // false
reg.test('aa is a cc') // true