В настоящее время я использую проверку 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"});
}
});
Эти поля связаны друг с другом. Вы не можете проверить это так. Вам нужно будет создать собственный валидатор, который будет проверять оба поля.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете разбить проблему на 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]
)
$
В противном случае, это действительно не может быть подтверждено отдельно.
Пожалуйста, добавьте несколько входных данных и ожидаемых результатов