1

Тема: Валідація паролю.

Допоможіть вирішити задачу: Доповнити функцію validate, яка приймає рядок password і вертає true якщо:

    Є хоть одна літера в верхньому регістрі;
    Є хоть одна літера в нижньому регістрі;
    Є хоть одна цифра;
    Довжина паролю не менше 8-ми символів;
    Пароль має лише латинскі літери и цифри.

Чи в іншому випадку вертає false.

Приклад:

validatePassword('password') === false
validatePassword('Admin12') === false
validatePassword('Admin123') === true
validatePassword('@dmiN122') === false

2

Re: Валідація паролю.

я б використав регулярний вираз штибу

[a-zA-Z0-9]+

і ще перевірка на довжину перед цим

Подякували: locksterqq1

3

Re: Валідація паролю.

Можеш мені розписати будь-ласка всю функцію, що б я зробиа аналіз для себе, буду вдячний!

4

Re: Валідація паролю.

locksterqq написав:

Доповнити функцію validate, яка приймає рядок password ...
Приклад:

validatePassword('password') === false

А до чого тут validatePassword ?

Подякували: FakiNyan1

5

Re: Валідація паролю.

locksterqq написав:

Можеш мені розписати будь-ласка всю функцію, що б я зробиа аналіз для себе, буду вдячний!

Ви не показали власних напрацювань, тому ні.

Подякували: leofun011

6

Re: Валідація паролю.

locksterqq написав:

Пароль має лише латинскі літери и цифри.

validatePassword('@dmiN122') === false

:) В якому б світі ми жили ...

Ну, якось так:

let getRangesFlags = (str, validRanges) => {
    let rangesFlags = 0;
    for(let i = 0; i < str.length; ++i) {
        let c = str.charAt(i);
        let flag = 0;
        for(let r = 0; r < validRanges.length; ++r) {
            if(validRanges[r].min <= c && c <= validRanges[r].max)
                flag |= 1 << r;
        }
        if(flag === 0) return -1;
        rangesFlags |= flag;
    }
    return rangesFlags;
};
let ranges = [
    { min: '0', max: '9' },
    { min: 'A', max: 'Z' },
    { min: 'a', max: 'z' }
];
let validate = (password) => password.length >= 8 &&
    getRangesFlags(password, ranges) === getRangesFlags('rA9', ranges);

Тести:

validate('password') === false
validate('Admin12') === false
validate('Admin123') === true
validate('@dmiN122') === false
Подякували: FakiNyan, locksterqq2

7

Re: Валідація паролю.

я так дійшов, но тут нада доробить якось провірку на символи(

function validatePassword(password) {
    // write code here
    if(password.length < 8) {
        return false;
    }

    if(!password.match(/[a-z]/)) {
        return false;
    }

    if(!password.match(/[A-Z]/)) {
        return false;
    }

    if(!password.match(/[0-9]/)) {
        return false;
    }

    return true;
}

8

Re: Валідація паролю.

let validate = (password) =>
    /^[0-9A-Za-z]{8,}$/.test(password) &&
    /[0-9]/.test(password) &&
    /[A-Z]/.test(password) &&
    /[a-z]/.test(password);