在公历中,如果一年可以被400整除,那么它就是闰年。 2000年是2100年没有的闰年。如何仅使用正则表达式构造实现(if year % 400 == 0)
?使用if else语句的实现将被视为无效,因为这将在外部处理。该解决方案将验证2月份是28天还是29天。我的问题涉及4位数年份(从1000开始),但任何一般解决方案的指南也会非常有用。
答案 0 :(得分:0)
试试这个正则表达式
它将匹配闰年。
((^(10|12|0?[13578])([/])(3[01]|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(11|0?[469])([/])(30|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(2[0-8]|1[0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(29)([/])([2468][048]00)$)|(^(0?2)([/])(29)([/])([3579][26]00)$)|(^(0?2)([/])(29)([/])([1][89][0][48])$)|(^(0?2)([/])(29)([/])([2-9][0-9][0][48])$)|(^(0?2)([/])(29)([/])([1][89][2468][048])$)|(^(0?2)([/])(29)([/])([2-9][0-9][2468][048])$)|(^(0?2)([/])(29)([/])([1][89][13579][26])$)|(^(0?2)([/])(29)([/])([2-9][0-9][13579][26])$))
匹配
mm / dd / yyyy,m / dd / yyyy,mm,d / yyyy和m / d / yyyy