/^\d{4}-\d{2}-\d{2}$/ 
试试

解决方案 »

  1.   

    中间的-前应加\吧,我通常是这样写的:
    /\d{4}\-\d{1,2}\-\d{1,2}$/
    这样可与类似于:2004-1-1,或者2004-12-1日这样的匹配,如果月、日一定要都两位数,就是:
    /\d{4}\-\d{2}\-\d{2}$/
      

  2.   

    上礼拜正好写了一大堆正则的程序,用这个验证的比较全面String.prototype.isDate = function()
    {
       var r = this.match(/^\b((19|20)\d{2})(1[0-2]|0?[1-9])(0?[1-9]|[12][0-9]|3[01])$/); 
       if(r==null)return false; var d = new Date(r[1], r[3]-1, r[4]); 
       return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }
    function checkDate( formName, txtName )
    {
      var objtxt = eval( "document." + formName + "." + txtName );
      if(!objtxt.value.isDate())
      {
        alert("日期格式错误! 正确格式举例:20050420");
        objtxt.focus();
    objtxt.value="";
        return false;
      }
      return true;
    }
      

  3.   

    完整的yyyy-mm-dd格式日期检查函数:function CheckDate(strDate){
    var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/;
    if(!reg.test(strDate)){
    alert("日期格式不正确!\n正确格式为:2004-01-01");
    return false;
    }
    var ss=strDate.split("-");
    var year=ss[0];
    var month=ss[1];
    var date=ss[2];
    if(!checkYear(year)){return false;}
    if(!checkMonth(month)){return false;}
    if(!checkDate(year,month,date)){return false;}
    return true;
    }
    function checkYear(year){
    if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;}
    else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false}
    else return true;
    }
    function checkMonth(month){
    if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;}
    else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false}
    else return true;
    }
    function checkDate(year,month,date){
    var daysOfMonth=CalDays(parseInt(year),parseInt(month));
    if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;}
    else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;}
    else return true;
    }
    function CalDays(year,month){
    var days=0;
    switch(month){
    case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
    case 4: case 6: case 9: case 11: days=30;break;
    case 2: if(isLeapYear(year)) days=29;
    else days=28;
    break;
    }
    return days;
    }
    function isLeapYear(year){
    if((year %4==0 && year %100!=0) || (year %400==0)) return true;
    else return false;
    }