正则表达式断言(Assertions)

Posted sea-breeze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式断言(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);
}

 

技术图片

 

以上是关于正则表达式断言(Assertions)的主要内容,如果未能解决你的问题,请参考以下文章

Swift之:断言(Assertions)

使用 Fluent Assertions 库的多个断言

正则表达式前瞻(?=)后顾(?<)负前缀(?!)负后顾(?<!)

SV -- Assertions 断言

012 断言(Assertions)

Python 正则表达式零宽正负向断言的用法及示例代码