正则表达式断言(Assertions)

一 零宽正向先行断言

x(?=y)  仅匹配被y跟随的x。

const regExp = /Jack(?=Sparrow|Dawson)/g;
const str = 'JackJones JackSparrow JackDawson';
let result;
while((result = regExp.exec(str))!=null){
    console.log(result);
}

二 零宽度负向先行断言

x(?!y)  仅匹配不被y跟随的x。

const regExp = /Jack(?!Sparrow)/g;
const str = 'JackJones JackSparrow JackDawson';
let result;
while((result = regExp.exec(str))!=null){
    console.log(result);
}

三 零宽度正向回顾断言

(?<=y)x  x只有在y后面才匹配

const regExp = /(?<=BMW)sX5/g;
const str = 'vivo X5 BMW X5 LandWind X5';
let result;
while((result = regExp.exec(str))!=null){
    console.log(result);
}

四 零宽度负向回顾断言

(?<!y)x  x只有不在y后面才匹配

const regExp = /(?<!BMW)sX5/g;
const str = 'vivo X5 BMW X5 LandWind X5';
let result;
while((result = regExp.exec(str))!=null){
    console.log(result);
}

原文地址:https://www.cnblogs.com/sea-breeze/p/11862646.html