正则表达式之断言

(?=exp)零宽度正先行断言

零宽度正先行断言 为例: "先行"表示待校验的位置在前,即校验的位置在exp匹配的内容之前:

(?=\d{3})表示校验的位置后面是三个数字;

(?=\d+) 表示校验的位置后接着的是数字;

(?=^.{5}$)表示校验的位置后字符串长度为5,因为加了字符串开头和结尾的元符号,所以这个表达式作用其实就是匹配长度为5的字符串。

由上面例子可以看出,断言的作用就是指定一个位置,该位置的前后内容需要满足exp规则。

(?!exp)表示校验位置之后的内容不匹配exp规

(?!.*\d{3}.*)表示校验位置之后的内容中不包含三个连续的数字。这个表达式的作用其实就是筛选出不包含三个连续数字的字符串。

(?<=exp)表示校验位置之前的内容匹配exp规则

(?<=\d{3})表示校验位置前有三个连续的数字。这个表达式作用是匹配三个连续数字后面的内容。

(?<!exp)表示校验位置之前的内容不匹配exp规则

(?<!\d{2})表示校验位置前不是两个数字。这个表达式作用就是匹配字符串部分内容,这部分内容前不是两个连续的数字。

posted @ 2021-11-26 10:06  Jone_chen  阅读(254)  评论(0编辑  收藏  举报