Какой шаблон регулярных выражений использовался для проверки формата даты «дд-мм-гггг» - PullRequest
0 голосов
/ 04 октября 2019

Я хочу проверить, имеет ли формат даты значение дд-мм-гггг . Так что я могу изменить его.

if (date.match("/^\d{2}-\d{2}-\d{4}$/")) //dd-mm-yyyy
return value.replace(/(\d\d)\-(\d\d)\-(\d{4})/, "$3-$2-$1"); //yyyy-mm-dd`

Так, какой шаблон является правильным для него, чтобы проверить формат даты.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Я думаю, что это должно работать для вас

if (date.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/)){
      return date.replace(/(\d\d)\-(\d\d)\-(\d{4})/, "$3-$2-$1");
}

Замена, которую вы сделали, будет работать, но вы также должны учитывать дату xy-zzzz в dd-mm-yyyy или утверждать, что ввод будетдополненные нулями слева, если дата извлекается из некоторого источника, который следует шаблону 'x' вместо '0x', вышеприведенное регулярное выражение должно обрабатывать это тоже

1 голос
/ 04 октября 2019

В регулярном выражении ниже я проверяю, что день 01-31, месяц 01-12 и год 1900-2099. Если это так, замена произойдет и приведет к гггг-мм-дд.

function change(input) {
 return input.replace(/^((?:0[1-9]|[12]\d|3[01]))-((?:0[1-9]|1[012]))-((?:19\d\d|20\d\d))$/,"$3-$2-$1");
}

function check(input) {
  // If you want to accept year 0000-9999, replace "(?:19\d\d|20\d\d)" with "\d{4}"
  return /^(?:0[1-9]|[12]\d|3[01])-(?:0[1-9]|1[012])-(?:19\d\d|20\d\d)$/.test(input)
}
console.log(change("01-10-1922"));

console.log("01-10-2011",check("01-10-2011")); // true
console.log("2011-10-01",check("2011-10-01")); // false
console.log("01-21-2011",check("01-21-2011")); // false

Дата не будет подтверждена. Например, он с радостью примет 31 февраля, 31 апреля и т. Д., Но не будет пытаться конвертировать 32 февраля, 00 января или месяц 13 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...