Задать вопрос
Mambli-Joe
@Mambli-Joe

Почему регулярное выражение неправильно работает?

Вот есть форма. Хочу сделать проверку, что в инпут можно ввести только 4 цифры, иначе форма не отправится.
<form name='forma12'>
<input type="text" class="credit-card__holder" name="holder"  placeholder="Держатель карты">
 <input  type="submit" class="card-req__button"  onclick="return validate(forma12);" value="Отправить"></input>
 </form>

Есть сценарий на проверку инпута, что в нем должно быть 4 цифры.
function validate(obj) {
  var holder=obj.holder.value;
  var holder_pattern=/[0-9]{4}/;
  var check=holder_pattern.test(holder);
  if (check==true) {
        return true;
  }
  else {
        alert("Введенные данные некорректны!");
        return false;
  }
}

Ссылка на CodePen
Если ввожу буквы - работает верно (не отправляет); если меньше 4 цифр, то тоже работает верно; при 4 цифрах отправляет; но если вводить больше 4 цифр и букв вперемешку, то все равно отправляет, хотя не должен. Где я ошибся?
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
/[0-9]{4}/ - значит, что строка будет содержать 4 цифры ,а не состоять из 4-х цифр.
Поэтому нужно дописать вначале ^ - начало строки и в конце $ - конец строки
/^[0-9]{4}$/ - строка должна состоять из цифр.
Ответ написан
romanko_vn
@romanko_vn
Поставь символ начала и конца строки
/^[0-9]{4}$/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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