> 文章列表 > 正则表达式的先行断言(lookahead)和后行断言(lookbehind)

正则表达式的先行断言(lookahead)和后行断言(lookbehind)

正则表达式的先行断言(lookahead)和后行断言(lookbehind)

正则表达式的先行断言(lookahead)和后行断言(lookbehind)

(?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion)
(?!pattern) 零宽负向先行断言(zero-width negative lookahead assertion)
(?<=pattern) 零宽正向后行断言(zero-width positive lookbehind assertion)
(?<!pattern) 零宽负向后行断言(zero-width negative lookbehind assertion)

断言
x(?=y) 匹配'x'仅仅当'x'后面跟着 'y',这种叫做正向先行断言
(?<=y)x 匹配'x'仅仅当'x'前面是'y',这种叫做正向后行断言
x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这种称为负向先行断言
(?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这种称为负向后行断言

^(?=.*[0-9])(?=.*[a-zA-Z]).{8,16}

(?=.*[0-9])
任意字符串后有一数字
(?=.*[a-z])
任意字符串后有一小写字母
(?=.*[A-Z])
任意字符串后有一大写字母
整个正则表示8-16位字符,必须同时包含数字,小写字母,大写字母。