Javascript - моя программа проверки паролей ничего не печатает - PullRequest
0 голосов
/ 27 апреля 2018

Я очень новичок в 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(); 

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

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"); 

ваша функция написана неправильно, и это не тот способ, которым вы обычно должны проверять пароль. Вот как бы я это сделал

0 голосов
/ 27 апреля 2018

В вашем коде несколько синтаксических ошибок! - пропущенные кавычки, слишком много скобок и т. д. *

Тем не менее ниже исправленный фрагмент вашего кода, который печатает желаемое поведение:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...