一、正则
1.命名捕获
语法:(?<名字>)
let str='2018-09-03'; let reg=/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; let {year,month,day}=str.match(reg).groups; console.log(year,month,day);//2018 09 03
2.反向引用命名捕获
语法: \k<名字>
let str='welcome-welcome' let reg=/^(?<a>welcome)-\k<a>$/; console.log(reg.test(str));//true let str='welcome-welcome-welcome' let reg=/^(?<a>welcome)-\k<a>-\1$/; console.log(reg.test(str));//true
3.替换replace
语法 $<名字>
let str='2018-09-03'; let reg=/^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/; console.log(str.replace(reg,'$<month>/$<day>/$<year>'));// 09/03/2018 console.log(str.replace(reg,'$2/$3/$1'));// 09/03/2018 let str1=str.replace(reg,(...args)=>{ console.log(args);//["2018-09-03", "2018", "09", "03", 0, "2018-09-03", {year: "2018", month: "09", day: "03"}] let {year,month,day}=args[args.length-1]; return month+'/'+day+'/'+year; }); console.log(str1);//09/03/2018
4.dotAll模式 (s) 匹配任意内容
let str='aaa\nbbb'; let reg=/^\w+.\w+$/; console.log(reg.test(str));//false let str='aaa\nbbb'; let reg=/^\w+.\w+$/s;//s模式 console.log(reg.test(str));//true
二、函数
1.标签函数
function fn(args){ console.log(args);//["abc", raw: Array(1)] console.log(args[0]);//abc } // 标签函数调用 fn`abc`