Проверка даты истечения срока действия кредитной карты Javascript

В настоящее время я использую проверку javascript для проверки того, что пользователь вводит действительную дату, однако мои текущие шаблоны регулярных выражений не подтверждают, что пользователь не должен иметь возможность вводить дату менее 19 марта. Вместо этого он позволяет 19.01, а также 19.02 и т. д.

Я считаю, что есть другие способы сделать эту проверку в javascript, однако мне было интересно, есть ли способ с этим регулярным выражением.

текущий javascript:

var errdiv = $(".error");
  $("#form").validate({
    rules: {
      cardmm: {
        required: true,
        minlength: 2,
        maxlength: 2,
        pattern: "^(1[0-2]|[0-9]|)$"
      },
      cardyy: {
        required: true,
        minlength: 2,
        maxlength: 2,
          pattern: "^(2[0-8]|19|)$"
      },
    },
    messages: {
      cardmm: {
        required: "Please enter valid details.",
        minlength: "Please enter valid details.",
        maxlength: "Please enter valid details.",
        max: "Please enter valid details.",
        pattern: "Please enter valid details."
      },
      cardyy: {
        required: "Please enter valid details.",
        minlength: "Please enter valid details.",
        maxlength: "Please enter valid details.",
        pattern: "Please enter valid details."
      },
    },
    errorPlacement: function(error, element, m) {
      errdiv.css({"display": "block"});
      errdiv.empty();
      errdiv.text(error[0].innerHTML);
    },
    success: function(error) {
        error.removeClass("error");  // <- no, no, no!!
        errdiv.css({"display": "none"});
    }
  });

Пожалуйста, добавьте несколько входных данных и ожидаемых результатов

Aniket G 15.03.2019 01:24

Эти поля связаны друг с другом. Вы не можете проверить это так. Вам нужно будет создать собственный валидатор, который будет проверять оба поля.

Krzysztof Dąbrowski 15.03.2019 01:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
187
2

Ответы 2

Вы можете разбить проблему на 2 части: регулярное выражение для любой даты с годом больше 2019 и другое для конкретных месяцев, которые вы хотите разрешить для 2019 года, а затем объединить их в свое окончательное регулярное выражение.

Вы всегда можете вызвать небольшой скрипт, который объединяет поля mm и yy формы для проверки в целом.

Соедините поля косой чертой.

Затем регулярное выражение проверки:

^(?:(?:0?[3-9]|1[0-2])/19|(?:0?[1-9]|1[0-2])/2[0-8])$

Расширенный

 ^ 
 (?:
      (?: 0? [3-9] | 1 [0-2] )
      /19
   |  
      (?: 0? [1-9] | 1 [0-2] )
      /2 [0-8] 
 )
 $ 

В противном случае, это действительно не может быть подтверждено отдельно.

Другие вопросы по теме