М / д / гггг и мм / дд / гггг регулярное выражение с проверкой високосного года - PullRequest
0 голосов
/ 07 июня 2018

Я использую RegEx, который отлично проверяет високосный год и дни февраля.Но есть однажды сценарий, в котором я также хочу, чтобы проверка соответствовала как для m / d / yyyy, так и для mm / dd / yyyy.

  • 05/06/2000 - Matches
  • 5/6/2000 - не соответствует
  • 02/22/2018 - соответствует
  • 2/22/2018 - не соответствует

Так что яхотите игнорировать 0 для дня и месяца в нижнем регистре.Я пытался дать?после 0, что делает его необязательным, но не работает.

((0[13578]|1[02])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](18|19|20)[0-9]{2})|((0[469]|11)[\/.](0[1-9]|[12][0-9]|30)[\/.](18|19|20)[0-9]{2})|((02)[\/.](0[1-9]|1[0-9]|2[0-8])[\/.](18|19|20)[0-9]{2})|((02)[\/.]29[\/.](((18|19|20)(04|08|[2468][048]|[13579][26]))|2000))

Любые предложения, пожалуйста.Заранее спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Плохой способ проверки на високосные годы.Используйте сам объект Date:

(() => {
  const isLeapYear = year => new Date(Date.UTC(year, 1, 29)).getMonth() === 1;
  console.log( isLeapYear(2000) );
  console.log( isLeapYear(2001) );
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...