正则表达式用于密码有特定限制

时间:2019-08-27 06:13:14

标签: javascript regex

我正在尝试提出一个用于验证密码的正则表达式。限制如下:

  1. 必须至少为以下两项:

    • 一个小写[a-z]
    • 一个大写字母[A-Z]
    • 一位数字[\ d],
    • 一个特殊字符[!@#\ $%\ ^ \&*)(+ = ._-]。
  2. 不得以空格开头或结尾,但内部可以包含空格,

  3. 长度必须在7到20个字符之间。

到目前为止,这是我提出的最新版本:

^(?=.{7,20}$)(?:(?=.*[\d!@#\$%\^\&*\)\(+=._-])(?=.*[a-z])\S*|(?=.*[A-Z])(?=.*[\d!@#\$%\^\&*\)\(+=._-])\S*|(?=.*[A-Z])(?=.*[a-z])\S*|(?=.*[\d)\(+=._-])(?=.*[!@#\$%\^\&*\)\(+=._-])\S*)$

这适用于以上所有情况,但内部不允许有空格。我经历了多个正则表达式,这是迄今为止最好的(也是最丑陋的)。

编辑:感谢您的快速答复。为什么要有这些要求是无关紧要的。我知道,如果需要上述所有密码,密码将更加安全。但是由于并非所有客户都使用密码管理器... 现在,为什么这不是重复的问题?因为没有其他线程需要以上任何两个。他们只是从要求特定的两个开始,而不是添加另一个,依此类推。这必须是任何两个条件

1 个答案:

答案 0 :(得分:0)

嘿,您可以使用下面的正则表达式来满足您的要求

^(?=。 \ d)(?=。 [AZ])(?=。 [az])(?=。 [^ \ w \ d \ s:])([^ \ s]){7,20} $

相关问题