#javascript
Хочу чтобы функция возвращала true если пользователь ввёл 4 или 6 цифр. И false во
всех остальных случаях. Ввёл буквы, больше символов и т.д.
validatePIN("1234") === true
validatePIN("12345") === false
validatePIN("a234") === false
Код функции:
function validatePIN (pin) {
//return true or false
if (pin.length == 4) {
return true;
} else if (pin.length == 6) {
return true;
}
return false;
}
Как мне грамотно организовать проверку, того что в строке нет символов, кроме цифр
от 1 до 9.
Решение с помощью регулярного выражения:
^(\d{4}|\d{6})$
П.с. если кто знает покажите как сделать без RegExp
Ответы
Ответ 1
Ну если без регулярок, то вот так: function validatePIN(pin) { var i = pin.length; if (i != 4 && i != 6) { return false; } while (i--) { if (pin[i] < '0' || pin[i] > '9') { return false; } } return true; } console.log('should be true:'); console.log(validatePIN('1234')); console.log(validatePIN('0129')); console.log(validatePIN('123456')); console.log('should be false:'); console.log(validatePIN('12345')); console.log(validatePIN('a234')); console.log(validatePIN('123a')); console.log(validatePIN('-123')); console.log(validatePIN('1.23')); console.log(validatePIN('0x99')); console.log(validatePIN('0:29')); console.log(validatePIN('0/29'));Ответ 2
Диапазон ASCII function validatePIN(pin, valid = true) { l = pin.length; if(l != 4 && l != 6) return false; Array.from(pin).forEach((s) => { s = s.charCodeAt(0); if(s > 57 || s < 48) valid = false; }); return valid; } console.log(validatePIN("1234")); console.log(validatePIN("0123")); console.log(validatePIN("123456")); console.log(validatePIN("12345")); console.log(validatePIN("a234")); console.log(validatePIN("123a")); console.log(validatePIN("-123")); console.log(validatePIN("1.23")); console.log(validatePIN("0x99")); console.log(validatePIN("0:29"));Ответ 3
Или такой вариант: function validatePIN(pin) { if (isNaN(pin) || pin == 'null' || !isInteger(+pin)) { return false; } else if (pin.length == 4 || pin.length == 6) { return true; } return false; } function isInteger(num) { return (num ^ 0) === num; } console.log(validatePIN("123454")); //=== true console.log(validatePIN("1234")); //=== true console.log(validatePIN("a234")); //=== false console.log(validatePIN("a23445")); //=== false console.log(validatePIN('null')); //=== false console.log(validatePIN('1.23')); //=== false
Комментариев нет:
Отправить комментарий