正则表达式之断言
(?=exp)零宽度正先行断言
零宽度正先行断言 为例: "先行"表示待校验的位置在前,即校验的位置在exp匹配的内容之前:
(?=\d{3})表示校验的位置后面是三个数字;
(?=\d+) 表示校验的位置后接着的是数字;
(?=^.{5}$)表示校验的位置后字符串长度为5,因为加了字符串开头和结尾的元符号,所以这个表达式作用其实就是匹配长度为5的字符串。
由上面例子可以看出,断言的作用就是指定一个位置,该位置的前后内容需要满足exp规则。
(?!exp)表示校验位置之后的内容不匹配exp规则
(?!.*\d{3}.*)表示校验位置之后的内容中不包含三个连续的数字。这个表达式的作用其实就是筛选出不包含三个连续数字的字符串。
(?<=exp)表示校验位置之前的内容匹配exp规则
(?<=\d{3})表示校验位置前有三个连续的数字。这个表达式作用是匹配三个连续数字后面的内容。
(?<!exp)表示校验位置之前的内容不匹配exp规则
(?<!\d{2})表示校验位置前不是两个数字。这个表达式作用就是匹配字符串部分内容,这部分内容前不是两个连续的数字。