@HelpMeeee

Как проверить строку на наличие только цифр?

Добрый вечер!
Изучаю JS на кодварсе. Есть задачка, функция получает строку, если в этой строке 4 или 6 символов и содержаться только цифры нужно вернуть true. Я искал решения в интернете, есть много форумов, где был такой вопрос и дали решение, но у меня оно почему то не работает. Почему?

function validatePIN (pin) {
  a = /^[0-9]+$/.test(pin);
		  if(pin.length == 4 || pin.length == 6 && a == 1)
		  {
		    return true;
		  }else{
		  	return false;
		  }
		}
  • Вопрос задан
  • 4552 просмотра
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Дело в приоритете операторов: у && он выше, чем у ||. Поэтому выполняется так:
pin.length == 4 || (pin.length == 6 && a == 1)
Лечится расстановкой скобок.

Кроме того желательно не сравнивать a с 1: т.к. метод test() возвращает Boolean true или false, можно прямо проверятьif (a && (pin.length === 4 || pin.length === 6)) {

spoiler
Я бы так попробовал
const validatePIN = (pin) => /^\d{4}(\d{2})?$/.test(pin);
Между началом и концом строки должно быть 4 цифры и, опционально, ещё 2.
Ответ написан
Seasle
@Seasle Куратор тега JavaScript
function validatePIN(pin) {
  const preparedPin = pin.replace(/\D/g, '');
  
  return preparedPin === pin && (pin.length === 4 || pin.length === 6);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы