用于密码验证的正则表达式,具有至少4个不同字符组中的3个

时间:2019-04-07 16:44:22

标签: javascript regex

尝试编写密码验证器,该验证器可以包含4个字符组中的至少3个不同的字符组。

条件:

  1. 密码至少八个8个字符。
  2. 密码应具有以下4个字符中的3个不同的字符组 字符组,每个字符组的密码至少应包含2个字符。

    大写字母

    小写字母

    数字

    特殊字符(!@#$%&)

我在javascript中写了正则表达式:

IQKeyboardManagerSwift

但这并没有通过某些条件。

一些有效密码:

a2w4hHH#

$#aaY5U5

YT7gh8q2

任何帮助将不胜感激 谢谢:)

1 个答案:

答案 0 :(得分:1)

考虑到您需要至少匹配四个字符集需求中的任何三个,编写一个用于验证密码的Javascript函数比使用纯正则表达式解决方案要容易得多。如果使用全部四个字符集而不是四个中的三个字符集,则纯正则表达式解决方案很容易。

选中此功能,该功能应该可以按您需要的方式工作。

function isPasswordValid(pass) {
  if (pass.length < 8) {
    return false;
  }
  var reg = [/[a-z]/,/[A-Z]/,/[0-9]/,/[(!@#$%&]/]
  var count = 0;
  for (var i = 0; i < reg.length;i++) {
    if (reg[i].test(pass)) {
      count++;
    }
    if (count >=3) {
      return true;
    }
  }
  return false;
}

var pwds = ['aB1@','aB1@aaaa','aaaaaaAA','$#aaY5U5','YT7gh8q2'];
for (s of pwds) {
  console.log(s + ' --> ' + isPasswordValid(s));
}