Страницы

Поиск по вопросам

пятница, 7 февраля 2020 г.

проверка введённого пользователем пин-кода

#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

Комментариев нет:

Отправить комментарий