Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Валидатор Password (https://javascript.ru/forum/events/61173-validator-password.html)

Alexander Belov 07.02.2016 15:23

Валидатор Password
 
Привет!

Прошу помощи в решении проблемы.
Делаю функцию валидатора 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

Цитата:

Сообщение от FeelUs (Сообщение 406687)
Если вы в последней строке пытаетесь вызвать вашу функцию, то слово 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

Цитата:

Сообщение от FeelUs (Сообщение 406704)
еще чуть чуть:
return Digit && Upper && Lower && str.length > 7;

но так можно делать, если уверен, что все значения булевские

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


Часовой пояс GMT +3, время: 06:53.