1

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

/^\S{8,24}$/

限制是:

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

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

4

2 回答 2

3

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

不是真的,问题:

  1. 有些人想要空白。
  2. 有些人想要一个超过 24 个字符的密码。
  3. 不强制一定范围的字符允许人们输入非常简单的密码,这些密码很容易被破解。例如,一个只有小写字符的 8 字符密码,就像人们会做的那样,有 26 8 = 208827064576 种可能性,这可能只需要几分钟就可以完成。更不用说所有字符都相同的密码了。许多网站至少需要:
    • 一个号码
    • 一个大写字符
    • 一个小写字符

谷歌“正则表达式密码验证”以获得一些想法,有很多。第一个链接

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

是的,没关系。

于 2013-06-02T17:13:39.143 回答
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
于 2013-06-02T17:14:07.200 回答