我现在想校验三种日期型的情况,分别是yyyy,yyyy-mm,yyyy-mm-dd,在前台输入的文本框输入,通过模糊查询到数据库,这三种情况都可以查到数据,分别是年,月,日,还要求月必须是1到12月,闰年,我在javascript写的,这是我在判断yyyy-mm-dd的代码,请大哥们帮帮忙!!!!!function DispMessage(CheckCtl,Msg)
{
 if (Msg!="")
 {
  alert(Msg);
  //CheckCtl.select();
  CheckCtl.focus();
 }
}

function checkit()
{
if(!seaarch.cwrq.value==""){

if (!(seaarch.cwrq.value.match(/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/)))
{
DispMessage(seaarch.cwrq,"“成文日期必须为日期格式”例如:2008-08-08");
return false;
}
else{
return true;
}
}else{

return true;
}

}

解决方案 »

  1.   

    <script language="javascript">
    var pattern = /(^\d{4}$)|(^\d{4}-(0[1-9]|1[0-2])$)|(^\d{4}-(0[1-9]|1[0-2])-\d{2}$)/;
    var date = "2009-11-30";
    alert(pattern.test(date));
    </script>
      

  2.   

    判断是true,不过我现在想对yyyy来判断,和yyyy-mm判断,不是全部啊!能帮我想想吗?谢谢
      

  3.   

    2楼yyyy,yyyy-mm,yyyy-mm-dd这三种格式都可以判断的,你可以测试一下。
      

  4.   

    刚刚试过,是可以的,不过对几号没有做check,只是判断不能为百位,那如果首位有个空格,在格式上还是会报错啊,如“ 2010-10-10”,这怎么办?能不能先在js上使用trim()来把空格去掉,能帮我看看吗?谢谢
      

  5.   

    是可以的,不过对几号没有做check,只是判断不能为百位,那如果首位有个空格,在格式上还是会报错啊,如“ 2010-10-10”,这怎么办?能不能先在js上使用trim()来把空格去掉,能帮我看看吗?谢谢
      

  6.   

      还有个问题,我现在想对A-A1股权协议,A-A2战略协议,如这样的字符串,我想只取前面的字母,如A-A1,改怎么办?用java来实现
    谢谢
      

  7.   

    /**
     * 是否为日期 格式yyyy-MM-dd
     */
    validate.prototype.isDate = function (str) {
    return new RegExp("^((\\d{4})|(\\d{2}))([-])(\\d{1,2})\\4(\\d{1,2})$").test(str);
    }
    /**
     * 校验时间 格式yyyy-MM-dd HH:mm:ss
     */
    validate.prototype.isDateTime = function (str) {
      var   reg   =   /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;     
      var   r   =   str.match(reg);     
      if(r==null)return   false;     
      var   d=   new   Date(r[1],   r[3]-1,r[4],r[5],r[6],r[7]);   
      var month =(""+ (d.getMonth()+1)).length <= 1?"0"+ (d.getMonth()+1):""+ (d.getMonth()+1);
      var day = (""+ d.getDate()).length <= 1?"0"+ d.getDate():""+ d.getDate();
      
      var hh = (""+ d.getHours()).length <= 1?"0"+ d.getHours():""+ d.getHours();
      var mm = (""+ d.getMinutes()).length <= 1?"0"+ d.getMinutes():""+ d.getMinutes();
      var ss = (""+ d.getSeconds()).length <= 1?"0"+ d.getSeconds():""+ d.getSeconds();
      var   newStr = d.getFullYear()+r[2]+month+r[2]+day+" "+hh+":"+mm+":"+ss; 
      return   newStr == str;
    }
      

  8.   

    function fnc_StrToDate(str) {
    if(!str.match/(^\d{4}$)|(^\d{4}-(0[1-9]|1[0-2])$)|(^\d{4}-(0[1-9]|1[0-2])-\d{2}$)/)){
    return false;
    } var year = RegExp.$1;
    var mon  = RegExp.$2;
    var wday = RegExp.$3;
    var date = new Date(year, mon - 1, wday); 
    var len = str.split("-");
    if (len == 0){wday = 1;date = 1;}
    else if (len == 1){date = 1;} if(year != date.getFullYear() || mon != date.getMonth() + 1 || wday != date.getDate()){ 
    return false;
    }
    return true;
    }
    以上方法可对应所有合法日期。
      

  9.   

    js没有trim函数,用date.replace(" ","");