【问题标题】:How do I make a function that validates a password and return 1 if it fulfills all requirements and 0 if it doesn't? [duplicate]如何创建一个验证密码的函数,如果满足所有要求则返回 1,如果不满足则返回 0? [复制]
【发布时间】:2020-11-08 10:04:25
【问题描述】:

我想在 JS 中创建一个验证密码的函数。密码必须至少有 8 个字符,最多 32 个字符,至少一个大写字母、一个小写字母和一个数字。此外,它应该在满足所有要求时返回 1,在不满足时返回 0。
我的程序返回一个布尔值,但即使它为真,它也一直返回 0。我该怎么办?

var validatePassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/

console.log(validatePassword.test("Password10"))

if (validatePassword == true) {
    console.log("1")
}
  
else {
    console.log("0")
}

【问题讨论】:

    标签: javascript regex if-statement boolean passwords


    【解决方案1】:

    const pattern = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/
    
    function validate(password){
      return pattern.test(password) ? 1 : 0;
    }
    
    console.log(validate("Password10"))

    【讨论】:

      【解决方案2】:

      您正在验证已编译的正则表达式变量是否存在。

      这行得通:

      var passRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/
      
      function isPasswordValid(p) {
        return passRegex.test(p) ? 1 : 0;
      }
      
      console.log(isPasswordValid("Password10"));
      console.log(isPasswordValid("Pass0"));

      【讨论】:

        【解决方案3】:

        您忘记将test 方法的结果保存到变量中,然后将其放入 if。这就是为什么即使它是 true 它也永远不会进入 if 语句。首先将其保存到变量中,然后在这样的情况下进行比较

        var validatePassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/
        
        let result = validatePassword.test("Password10")
        console.log(result)
        
        if (result == true) {
            console.log("1")
        } else {
            console.log("0")
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多