简单的密码正则表达式,任何潜在的问题?

时间:2013-06-02 17:08:57

标签: regex passwords

我有一个简单的问题,我打算使用以下正则表达式来测试密码字段:

/^\S{8,24}$/

限制是:

允许使用除空白之外的任何字符,长度在8到24之间。

有人预计使用此正则表达式作为密码可能会出现任何问题吗?

2 个答案:

答案 0 :(得分:3)

如果您询问所提供的限制是否良好:

不是,问题:

  1. 有些人想要白色空间。
  2. 有些人想要一个超过24个字符的密码。
  3. 不强制使用一定范围的字符可以让人们输入非常简单的密码,这些密码很容易破解。例如,一个只有小写字符的8个字符的密码就像人们一样,有26个 8 = 208827064576的可能性,这可能需要几分钟的时间才能完成。更不用说所有字符都相同的密码。许多网站至少要求:
    • 一个数字
    • 大写字符
    • 小写字符
  4. Google "regex password validation"得到一些想法,有一点。 First link

    如果您询问正则表达式是否强制执行所提供的限制:

    是的,没关系。

答案 1 :(得分:1)

几种:

  • ' 11111111'是一个有效的密码。
  • 不允许有空格。
  • 有一个上限(为什么不允许更长的密码?)

使用正则表达式验证密码强度是可能的。一个例子:

^             # Start of string
(?=.*[a-z])   # Assert presence of at least one lowercase ASCII character
(?=.*[A-Z])   # Assert presence of at least one uppercase ASCII character
(?=.*[0-9])   # Assert presence of at least one ASCII digit
(?=.*\W)      # Assert presence of at least one non-alphanumeric character
(?!.*(.)\1\1) # Assert no triply repeated characters (aaa)
.{8,}         # Match at least 8 characters
$             # End of string