@Adil1603

Как проверить пароль на валидность?

Не могу разобраться с кодом по проверке валидности пароля, не понимаю некоторые моменты, как работает код.

Задача такая:

Для начала вам необходимо запросить пароль у пользователя при помощи prompt.
Отобразите сообщение “Введите пароль”.
Пароль должен удовлетворять следующим условиям:
1. Длина пароля должна быть минимум 3 символа и не больше 20 символов (включая
20).
2. Пароль должен содержать минимум 1 прописную (большую) букву.
3. Пароль должен содержать минимум 1 цифру.
Если все условия удовлетворены, то выведите при помощи alert сообщение “Пароль
валидный. Добро пожаловать в аккаунт!”, иначе - “Пароль не удовлетворяет условиям!
Перезагрузите страницу и попробуйте ввести его еще раз.”


const password = prompt('Введите пароль');
const errorMessage = 'Пароль не удовлетворяет условиям! Перезагрузите страницу и попробуйте ввести его еще раз.';
const successMessage = 'Пароль валидный. Добро пожаловать в аккаунт!';

if (password.length < 3 || password.length > 30) {
  alert(errorMessage);
} else {
  let hasBigSymbol = false;
  let hasNumbers = false;
  for (let i = 0; i < password.length; i += 1) {
    const symbol = password[i];
    const isNumberSymbol = !isNaN(parseInt(symbol));
    if (symbol === symbol.toUpperCase() && !isNumberSymbol) {
      hasBigSymbol = true;
    }
    if (isNumberSymbol) {
      hasNumbers = true;
    }
  }

  if (!hasBigSymbol || !hasNumbers) {
    alert(errorMessage);
  } else {
    alert(successMessage);
  }
}


Мне не понятно что конкретно делает:

const isNumberSymbol = !isNaN(parseInt(symbol));

В консоли если переменная число, то выводит тру, если буква, то фолс.
parseInt - преобразует в целое число или возвращает Nan, а что делает дальше !isNan?

И что значит воскл. знак в условиях if

if (!hasBigSymbol || !hasNumbers)

Если есть время можете объяснить код.
  • Вопрос задан
  • 651 просмотр
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
const isValid = /^(?=.*[a-zA-Z])(?=.*\d)(?=.{3,20}$)/.test(password);
Ответ написан
Комментировать
@balamyt92
; select * from users; --
Мне не понятно что конкретно делает
const isNumberSymbol = !isNaN(parseInt(symbol));


проверяет является ли символ числом

и что значит воскл. знак в условиях if
if (!hasBigSymbol || !hasNumbers)


восклицательный знак перед чем либо это отрицание. В данном случае выражение значит "если нет больших символов или нет чисел"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы