使用?=.在正则表达式中

Izz*_*zzy 20 regex

我看到了这句话

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9_#@%\*\-]{8,24}$
Run Code Online (Sandbox Code Playgroud)

在正则表达式,这是密码检查机制.我读了很少关于正则表达式的课程,但我从未见过组合?=.解释.

我想知道它是如何工作的.在示例中,它搜索至少一个大写字母,一个小写字母和一个数字.我想这就像"如果".

The*_*Hat 19

(?=regex_here)是一个积极的前瞻.这是一个零宽度断言,这意味着它后跟容纳在正则表达式的位置相匹配(?=).要从链接页面引用:

lookaround实际匹配字符,但随后放弃匹配,只返回结果:匹配或不匹配.这就是他们被称为"断言"的原因.它们不消耗字符串中的字符,但仅断言是否可以匹配.Lookaround允许您创建在没有它们的情况下无法创建的正则表达式,或者在没有它们的情况下变得非常长.

.没有先行的一部分,因为它的任何单个字符不是行终止符相匹配.