我遇到一个小问题,我尝试为PHP创建自己的密码正则表达式。
这是我的表达:
/([a-zA-Z]+[0-9]+[!?]+)/
匹配后停止,例如a1?
是第一个匹配,a2!
是第二个匹配,但我希望它匹配整个字符串:
a1?a2!
之后,我尝试了这个表达式:
/([a-zA-Z]+[0-9]+[!?]+){6,12}/
但是,它与任何东西都不匹配。
答案 0 :(得分:2)
请注意,您的/([a-zA-Z]+[0-9]+[!?]+){6,12}/
正则表达式匹配6到12个1 +字母,1 +位和1 + !
或?
符号的序列。
实际上,您希望匹配一个或多个此类序列,然后使用仅仅+
量词:
'/^(?:[a-zA-Z]+[0-9]+[!?]+)+$/D'
请参阅regex demo
由于您需要验证模式,我认为您需要匹配整个字符串,因此您需要锚点^
和$
以及使用/D
修饰符禁止尾随\n
。
答案 1 :(得分:1)
这个正则表达式将用于您的密码" 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个特殊字符