Я пытаюсь написать несколько регулярных выражений для проверки ввода даты в ММ / ДД / ГГГГ. Каждая часть даты является отдельным входным текстовым полем, разделенным символом "/":
01 / 16 / 1985
На дату 16 января 1985 года.
Теперь он у меня там, где он допускает только числовые записи, что было легко с помощью replace () и простого регулярного выражения. Кстати, регулярные выражения - не моя сильная сторона, я их мало делаю, может быть, один или два раза в пару лет.
Ниже приведен код, который я использую, а также некоторые псевдо-регулярные выражения под моей заменой (). Мне трудно связать регулярное выражение числовой записи с регулярным выражением форматирования даты, которого я пытаюсь достичь (закомментировано в replace ())
//MM
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(0[1-9]|1[012])
//matching 01 (Jan) to 09 (Sep) to 10 (Oct) to 12 (Dec)
});
//DD
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(0[1-9]|[12][0-9]|3[01])
//matching 01-09, 10-19, 20-29, 30-31
//(not worried about picking 31 in February)
});
//YYYY
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(\d{4})
//really simple 4 digit, but don't really want 1245 as a valid year
//a range from 1900-current year would be great
//( 1900-newDate().getFullYear() )
//something like this possible?
);