繁体   English   中英

第一场比赛后匹配整个字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM