【发布时间】:2010-11-05 10:06:38
【问题描述】:
^([a-zA-Z0-9!@#$%^&*|()_\-+=\[\]{}:;\"',<.>?\/~`]{4,})$
这个正则表达式是否适用于这些规则?
- 必须至少有 4 个字符
- 字符可以是字母(大写/非大写)、数字和以下字符的混合:! @ # $ % ^ & * ( ) _ - + = | [ { } ] ; : '" , ? /
它旨在成为一个密码验证器。语言是 PHP。
【问题讨论】:
-
如果您使用它来验证密码,我的问题是:为什么要限制他们可以使用的字符类型?您应该只需要检查最少的字符数
-
而且 4 个字符对于任何值得保护的东西来说都太少了。如果不值得保护,为什么还要添加密码?
-
@MahlerFive 够吗?请注意,在针对数据库进行检查之前,密码将经过哈希处理+加盐处理。如果检查密码的字符数就足够了,那么我将不再实现这个正则表达式。 @Vinko 正如我在下面的评论中所说,我现在只使用了 4 个,因为它目前仍在开发中,登录时输入 4 个字符会更容易。
-
@Nikko:当您不指定字符范围并且用户在输入一些编码不同或根本不包含的字符时使用不同的编码时,您实际上可能会遇到问题(例如 UTF-8 和 ISO 8859-1)。但无论如何你都需要解决这个问题,而不是密码。
-
您到底为什么要禁用特殊字符作为密码策略?我无法想象您会鼓励人们生成弱密码而不是强密码。
标签: php regex validation passwords