使用常规密码

时间:2018-02-08 11:53:19

标签: javascript passwords

我必须通过这个条件来创建密码来创建密码以遵循这个特性:

  • 至少包含12个字母数字字符。
  • 包含大写和小写字母。
  • 至少包含一个数字(例如,0-9)。
  • 至少包含一个特殊字符(例如!$%^& *()_ + |〜 - =`{} []:&#34 ;;'<> ?,/)。

    我这样做了:

    <input type="password" required pattern="^(?=.*[a-zA-Z])(?=.*\d)(?=.*
     [!@#$%^&*()_+])[A-Za-z\d][A-Za-z\d!@#$%^&*{}()_=+]{12,}$"                                              
     name="password" 
     nblur="this.setCustomValidity(this.validity.patternMismatch 
      ? 'Password must contain at least 12 characters, including upper 
     lowercase numbers and least special character' : ''); 
     if(this.checkValidity()) form.password1.pattern = this.value;">
    

    但是当我尝试输入密码并确认它始终返回无效密码时

对不起这个问题,但是我使用了regExpression来表达这个特性。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在JavaScript中编写一系列测试并控制表单的submit事件。

var testPassword = (function() {
  var allTests = [];
  var minimumAlphaNumericCharacters = 12;

  function countAlphanumeric(password) {
    var count = password.length - password.replace(/[a-z]|\d/ig, '').length;
    if (count < minimumAlphaNumericCharacters) {
      return "Too few Alphanumeric Characters! At least " + minimumAlphaNumericCharacters + " nedded, " + count + " found";
    }
    return true;
  }
  allTests.push(countAlphanumeric);

  function containsUpperAndLowerCharacters(password) {
    var test = (password === password.toLowerCase());
    if (test) {
      return "Must contain both upper and lower case characters";
    }
    return true;
  }
  allTests.push(containsUpperAndLowerCharacters);
  var minimumDigits = 1;

  function containsMinimumDigits(password) {
    var test = password.replace(/\D/ig, '').length;
    if (test < minimumDigits) {
      return "Must contain at least " + minimumDigits + " digits, " + test + " digits found";
    }
    return true;
  }
  allTests.push(containsMinimumDigits);
  var minimumSpecials = 1;

  function containsMinimumSpecials(password) {
    var test = password.replace(/\w/ig, '').length;
    if (test < minimumSpecials) {
      return "Must contain at least " + minimumSpecials + " special symbols, " + test + " special symbols found";
    }
    return true;
  }
  allTests.push(containsMinimumSpecials);
  return function testPassword(password) {
    return allTests
      .map(function(test) {
        return test(password);
      })
      .filter(function(test) {
        return test !== true;
      });
  };
})();
//TEST
var form = document.body.appendChild(document.createElement("form"));
var input = form.appendChild(document.createElement("input"));
var output = document.body.appendChild(document.createElement("pre"));
input.onchange = input.onkeyup = form.onsubmit = function(evt) {
  var password = input.value.toString();
  var test = testPassword(password);
  output.textContent = test.join("\n");
  if (evt.type == "submit") {
    alert((test.length < 1 ? "Good" : "Bad") + " Password");
  }
  return false;
};