[英]After first match match the whole string
我有一个小问题,我尝试为PHP创建自己的密码正则表达式。
这是我的表达:
/([a-zA-Z]+[0-9]+[!?]+)/
匹配后停止,例如a1?
是第一场比赛, a2!
是第二场比赛,但我希望它匹配整个字符串:
a1?a2!
之后,我尝试了这个表达式:
/([a-zA-Z]+[0-9]+[!?]+){6,12}/
但是,它与任何东西都不匹配。
请注意,您的/([a-zA-Z]+[0-9]+[!?]+){6,12}/
regex匹配6到12个1 +字母,1 +数字和1+的序列!
还是?
符号。
实际上,你想匹配一个或多个这样的序列,然后使用一个+
量词:
'/^(?:[a-zA-Z]+[0-9]+[!?]+)+$/D'
请参阅正则表达式演示
由于您需要验证模式,我认为您需要匹配整个字符串,因此您需要使用锚点^
和$
并使用/D
修饰符来禁止尾随\\n
。
这个正则表达式将为您的密码“a1?a2!” -
((?=。 [a-zA-Z])(?=。 \\ d)(?=。 [?!])(?=。 [a-zA-Z])(?=。 \\ d)(? =。 [?!])。{6,20})
但你应该使用标准密码,如 -
^(?=。 [az])(?=。 [AZ])(?=。 \\ d)(?=。 [$ @ $!% ?&])[A-Za-z \\ d $ @ $! % ?&] {8,}
此正则表达式适用于:至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.