#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
Комментариев нет:
Отправить комментарий