正则表达式断言(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); }