【发布时间】:2011-02-04 15:23:31
【问题描述】:
我正在使用以下正则表达式来验证密码复杂性:
/^.*(?=.{6,12})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
简而言之:2个小写,2个大写,2个数字,最小长度为6,最大长度为12。
当我使用最小长度时,它完美地工作,除了最大长度。
例如:
/^.*(?=.{6,})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
这正确地要求最小长度为 6!
还有这个:
/^.*(?=.{,12})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
正确地要求最大长度为 12。
但是,当我像第一个示例一样将它们配对时,它就不起作用了!!
什么给了?谢谢!
【问题讨论】:
-
您想阻止某人拥有超过 13 个字符(因此更安全)密码的任何特定原因?
-
有些系统实际上有一个他们可以接受的最大密码长度,我记得在我以前的unix/windows组合网络上,我们不能超过8个字符。
-
除非不可避免的技术限制对密码长度进行硬限制(例如在@hhafez 的情况下),最佳实践绝对是不要不必要地限制密码长度(如@nickf 所说)。无论如何,您不必存储密码 - 只有它的哈希值,无论密码是 2 个字符还是 200 个字符,它的长度通常相同。
-
感谢所有回复,在这种情况下没有特别的理由限制最大长度,它只是一个完整的例子! :)
标签: php regex validation passwords