1、正向预查和反向预查

正则表达式中的预查分为四种:

1、正向肯定预查 (?=pattern) :表示的是从其当前位置开始,预测后面的字符串必须匹配上pattern
2、正向否定预查 (?!pattern) :表示的是从其当前位置开始,预测后面的字符串必须匹配不上pattern
3、反向肯定预查 (?<=pattern) :表示的是从其当前位置开始,预测前面的字符串必须匹配上pattern
4、反向否定预查 (?<!pattern) :表示的是从其当前位置开始,预测前面的字符串必须匹配不上pattern

2、举例说明

用户名的格式为:必须有包含数字和字符,且长度在4-8位之间,其正则表达式为:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{4,8}$

说明:

^:表示开始位置。
(?![0-9]+$):这是一个正向否定预查,表示从开始位置到结束位置不能全都是数字。
(?![a-zA-Z]+$):这也是一个正向否定预查,表示从开始位置到结束位置不能全都是字符。

可以看出,预查是不消耗字符的,也就是说预查只是限定了前面或者后面匹配的规则,而不占用匹配的字符。经过了两个预查限制之后,后面的[0-9A-Za-z]{4,8}说明了这个位置的可选项是数字或者大小写字母,而大括号限制了其位数可以在4-8位之间,最后一个$表示了结束位置,这样就能满足要求了。

注意:

如果仅仅是^[0-9A-Za-z]{4,8}$则表示是4-8位的字母或数字。

标签: none

[站长收徒]-[Java架构师学习指导]-[最后一次]


添加新评论