求日期的正则表达式:格式为 yyyy-mm-dd

解决方案 »

  1.   

    自己写了一个,初步验证正确:时间验证:^(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$
      ^(2[0-3]|[0-1]?\d):([0-5]?\d):([0-5]?\d)$润年:((19|20)(([13579][26])|([02468][048])))
    非闰年:((19|20)(([02468][1235679])|([13579][01345789])))2月:0?2
    大月:((0?[13578])|(1[02]))
    小月:((0?[469])|11)大月+天:(((0?[13578])|(1[02]))-((0?[1-9])|([12][0-9])|(3[01])))
    小月+天:(((0?[469])|11)-((0?[1-9])|([12][0-9])|30))润年2月+天:(0?2-((0?[1-9])|([12][0-9])))
    非闰年2月+天:(0?2-((0?[1-9])|(1[0-9])|(2[0-8])))闰年完整日期:
    (((19|20)(([13579][26])|([02468][048])))-((((0?[13578])|(1[02]))-((0?[1-9])|([12][0-9])|(3[01])))|(((0?[469])|11)-((0?[1-9])|([12][0-9])|30))|(0?2-((0?[1-9])|([12][0-9])))))非闰年完整日期:
    (((19|20)(([02468][1235679])|([13579][01345789])))-((((0?[13578])|(1[02]))-((0?[1-9])|([12][0-9])|(3[01])))|(((0?[469])|11)-((0?[1-9])|([12][0-9])|30))|(0?2-((0?[1-9])|(1[0-9])|(2[0-8])))))全部完整日期: 
    ((((19|20)(([13579][26])|([02468][048])))-((((0?[13578])|(1[02]))-((0?[1-9])|([12][0-9])|(3[01])))|(((0?[469])|11)-((0?[1-9])|([12][0-9])|30))|(0?2-((0?[1-9])|([12][0-9])))))|(((19|20)(([02468][1235679])|([13579][01345789])))-((((0?[13578])|(1[02]))-((0?[1-9])|([12][0-9])|(3[01])))|(((0?[469])|11)-((0?[1-9])|([12][0-9])|30))|(0?2-((0?[1-9])|(1[0-9])|(2[0-8]))))))
      

  2.   

    这个表达式JSP页面和ACTION里都可以用.
      

  3.   

    用正则表达式只能做非常简单的判断:\d{4}-[01]\d-[0123]\d
      

  4.   

    二楼啊~~,我第一次看到和一年之中天数一样长度的正则表达式,佩服得五体投地了,顺便学习一下。不过好像还有点问题,主要在闰年方面,1900 不是闰年(年份后面有两个“0”的需要被400整除才算是闰年),可你的表达式把“1900-02-29”判为 true 了,能否再改进一下。
      

  5.   

    匹配日期格式为 yyyy-mm-dd的正则表达式
    /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/