如何在没有特殊字符的情况下执行密码验证的正则表达式?

时间:2016-07-20 13:10:38

标签: regex

最小长度密码的正则表达式-7没有特殊字符,至少一个大写和一个数字。

就我而言,正则表达式满足:

Killer1 - 至少一个大写字母(K),至少一个数字(1),最小长度 - 7

Melbourne123-有效

London24 - 有效

提前致谢。

1 个答案:

答案 0 :(得分:3)

  

最小长度7

这一部分不出所料是最简单的。你可以使用:

.{7,}

要在单个正则表达式中执行其他检查,您需要使用look-aheads,如下所示:

  

至少一个大写

(?=.*[A-Z])
  

至少一个数字

(?=.*\d)
  

没有特殊字符

如果可能的话,我强烈建议不要这个要求。添加此项不会提高您的安全性,只会让您的用户感到沮丧。但是,如果你真的必须,那么:

(?!.*[^a-zA-Z0-9])

(视情况修改上述内容 - 取决于“特殊”字符的确切含义。)

将所有这些组合成一个单一的模式,最终的答案是:

\A(?=.*[A-Z])(?=.*\d)(?!.*[^a-zA-Z0-9]).{7,}

您还可以通过将“无特殊字符”和“最小长度”要求合并到单个正则表达式条件中来略微简化此正则表达式,如下所示:

\A(?=.*[A-Z])(?=.*\d)[a-zA-Z0-9]{7,}\z

(请注意此处额外使用\z锚点,以检查所有密码字符是否列入白名单“非特殊”字符。