ES2018-正则 &标签函数

一、正则

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`

猜你喜欢

转载自www.cnblogs.com/yuesu/p/9578915.html