2013-12-13 1 views

ответ

1

Используйте следующую

^((0?[1-9]|1[012])\/(0?[1-9]|1\d|2[0-9])|(0?[13456789]|1[012])\/(29|30)|(0?[13578]|1[02])\/31)$ 
+1

@CasimiretHippolyte Это работает для меня. Можете ли вы привести пример, который терпит неудачу? – stark

+0

Действительно, он работает хорошо. –

+1

Поскольку вы являетесь аскером, ваша работа - проверить его, как принято. –

1

Рег ех, что соответствует все действительные даты, включая високосные годы. Допустимые форматы мм/дд/гггг или мм-дд-гггг или mm.dd.yyyy формат

Flow for how this works

^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 
+3

Хорошее регулярное выражение, только OP хочет соответствовать MM/DD. Можно также оставить здесь ответ на историческую справку. – brandonscript

+0

@Amarnath: ваш второй образец соответствия «01/00/2014» –

+0

@CasimiretHippolyte удалили его пока. –