不管2月,只要格式对就可以,比如2008-01-01一定要是(四位-两位-两位)但要合逻辑,不能出现0008-15-51这样的
因为现在用的是WebCalendar.js这个控件所以一点TextBox就会出现日期让你选,选好后怕不小心改动发生错误,因为
特要求用正则表达式来匹配它这个格式,请高手给出
上次一个朋友给出的
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$
放进去就说在每个d上出现“无法识别的转义序列”
不知道什么原因
还有一个朋友给出的([0-9]{4}-[[0-9]|1[0-2]]-[[0-9]|[12][0-9]|3[01]])$
就只能匹配10月以后的,10月以前的都报错,哎,不知道是为什么啊
请高人再解答,感激

解决方案 »

  1.   

    补充:将TextBox设置为只读是不行的
    如果设置就读不到WebCalendar.js中的日期了,全为空所以这样不行
      

  2.   

    function CheckDate(date)  //这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了
    {
      var RegDate=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;
      return RegDate.test(date);
    }
      

  3.   

    还有textbox上加上  onkeypress="return false;" 可以防止按键输入
      

  4.   

    好注意,我喜欢,不过我一般还会加上onparse,onselect等等
      

  5.   

    哦,要加一个@^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$ 
    就可以了