求一个关于日期的正则。。
  要能够判断2月的天数
 怎么搞 请高手指点 

解决方案 »

  1.   

    ^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[1-9]\d{2}|[1-9]\d{3})-(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30))|(02-(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$
    这个正则表达式有点长,是验证的日期格式是 四位年-2位月-2位日的形式
      

  2.   

    我的也老没学好 刚那个真的有点长·。 我在Eclipse下分了六行
      

  3.   

    我来一个强大的,用几万个边沿数据测试过了:
    ^(?!0000)[0-9]{4}-((0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8]|(?<=-0?[13578]-|-1[02]-)31|(?<!-0?2-)(29|30))|(?<=(?<=[02468][048]|[13579][26]|(?<![02468][048]|[13579][26])00)-)0?2-29)$
    注意:(?<=)向左预查需要高版本的正则表达式,非常遗憾地,如果你想用在js上,版本就不够!!!
      

  4.   

    刚才的弄错了,果然是不做不知道,一做吓一跳:
    闰年规则中,似乎百年不闰对公元1501年以前不适用,不知道是java API出错了,还是就是这样的!!!
    重写了下,修正点小BUG,另外再来个兼容的,可以在js上跑:
    ^((?!0000)[0-9]{4}(-(0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8])|-(0?[13-9]|1[0-2])-(29|30)|-(0?[13578]|1[02])-31)|(?!0000)([0-9]{2}(04|08|[2468][048]|[13579][26])|(0[0-9]|1[0-5]|[2468][048]|[13579][26])00)-0?2-29)$
      

  5.   

    不是java不适用,是操作系统只能到那一年应该是1700年