Вход

Просмотр полной версии : Валидатор Password


Alexander Belov
07.02.2016, 15:23
Привет!

Прошу помощи в решении проблемы.
Делаю функцию валидатора Password.
По условию, в Password должны присутствовать хотя бы одна цифра, хотя бы одна заглавная буква, хотя бы одна строчная буква и длина Password должна быть хотя бы 8 символов.
Ок.

Вот что есть:

function password(str) {

var Digit = /[0-9]/.test(str) //хотя бы одна цифра
var Upper = /[A-Z]/.test(str) //хотя бы одна заглавная буква
var Lower = /[a-z]/.test(str) //хотя бы одна строчная буква

for (var i = 0; i < str.length; i++) {

if(Digit && Upper && Lower && str.length > 7) {
return true;
}

else {
return false
}

}

}

function password();


При вводе любой комбинации в function password(/*** Вот сюда ***/)
функция не работает, консоль выдаёт ошибку Unexpected token ; или }
В моём понимании всё написано верно. В чём кроется проблема?

FeelUs
07.02.2016, 16:12
Если вы в последней строке пытаетесь вызвать вашу функцию, то слово function писать не надо

Alexander Belov
07.02.2016, 16:21
Если вы в последней строке пытаетесь вызвать вашу функцию, то слово function писать не надо

Согласен, но даже пусть мы уберём слово "function" и передадим параметр внутрь этой функции, консоль выдаст Not defined

FeelUs
07.02.2016, 16:41
посмотрите на поведение функции в отладчике пошагово, попробуйте передать пустую и не пустую строку
и ответьте себе на вопрос: сколько раз вы хотите выполнить тело цикла? и как это число должно зависеть от длины строки?

рони
07.02.2016, 17:28
FeelUs,
function password(str) {
var Digit = /[0-9]/.test(str);
var Upper = /[A-Z]/.test(str);
var Lower = /[a-z]/.test(str);
if (Digit && Upper && Lower && str.length > 7) return true;
else return false
};

alert([password("123"),password("ZZZ"),password("1Za"),password("1Za1Za1Za")]);

FeelUs
07.02.2016, 18:01
еще чуть чуть:
return Digit && Upper && Lower && str.length > 7;
но так можно делать, если уверен, что все значения булевские
иначе можно выполнить в консоли true && 7 или 6 && null и посмотреть что получится

destus
07.02.2016, 18:09
еще чуть чуть:
return Digit && Upper && Lower && str.length > 7;
но так можно делать, если уверен, что все значения булевские


А как метод test для регулярного выражения может вернуть не булевское значение? :-?