【问题标题】:Javascript - my password checker doesn't print anythingJavascript - 我的密码检查器不打印任何内容
【发布时间】:2018-04-27 14:10:16
【问题描述】:

我对 js 很陌生。这是我第一次尝试有用的东西。这个概念很简单:准备一个 json 数组,然后 foreach 循环遍历它。如果它在一个循环中失败,则打印一条错误消息。我尝试运行此代码,但没有任何反应:

var pass = ji3or;
function passCheck {
 var variations = {
                    digits:{ /\d/.test(pass),errorMsg:"Must contain at least 1 digit!"},
                    lower: {/[a-z]/.test(pass),errorMsg:"Must contain at least 1 lower case letter!"},
                    upper: {/[A-Z]/.test(pass),errorMsg:"Must contain at least 1 upper case letter!"},
                    nonWords:{ /\W/.test(pass),errorMsg:"Must contain at least 1 non-letter symbol e.g. "@"!"},
                }

            for (var check in variations) {
                 variations[check] == true ?  : document.write(check.errorMsg);
                }
            }   
           }
           passCheck(); 

【问题讨论】:

  • 您遇到了一些语法错误,并且可能希望将ji3or 作为字符串。你检查过浏览器的开发工具吗?
  • 您检查过您的控制台吗? function passCheck 缺少 ()symbol e.g. "@"!" 有错误的引号。三元运算符缺少if-true 语句
  • 阅读 javascript 教程。

标签: javascript json foreach


【解决方案1】:

您的代码中有几个语法错误! - 缺少引号、太多括号等...

尽管如此,在打印您所需行为的代码的更正 sn-p 下方:

var pass = "ji3or"; // strings need to be wrapped in quotes

function passCheck(pass) { // pass a variable to the function instead of relying on the global one
    var variations = {
        // add a proper key to reference it later and make it a valid object
        digits: { isValid: /\d/.test(pass), errorMsg: "Must contain at least 1 digit!" },
        lower: { isValid: /[a-z]/.test(pass), errorMsg: "Must contain at least 1 lower case letter!" },
        upper: { isValid: /[A-Z]/.test(pass), errorMsg: "Must contain at least 1 upper case letter!" },
        nonWords:{ isValid: /\W/.test(pass), errorMsg: "Must contain at least 1 non-letter symbol e.g. '@'!" } // use different quotes and not "@" or escape them with \"
    }

    for (var key in variations) {
        if(!variations[key].isValid) // you dont need a ternary operator, just check for a false value
            document.write(variations[key].errorMsg);
    }   
}

passCheck(pass);

【讨论】:

    【解决方案2】:

    function passCheck(pass){
      if(pass.length<6){
        console.log("password too short")
      }
      else if(!/[A-Z]/.test(pass)){ 
        console.log("must contain uppercase letter")}
        else {
          console.log("all good")
        }
                }   
               
      passCheck("Asadasdasd"); 

    你的函数写错了,这不是你通常应该如何验证密码的方式。这是我会怎么做的

    【讨论】:

    • 非常感谢!我忘记了长度部分!
    • 实话实说,您的代码实际上更有意义,更有针对性,更适合这种情况。
    猜你喜欢
    • 2016-05-02
    • 2019-05-26
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多