这个为什么要用正则,如果你想改的话就把
第一个-改成
[\-\/]
之后全改成这个\数字,上面那个是第几个括号就是几
我觉得不要用正则,给你段代码
<script langauge=javascript>
function checkDate(obj)//判断日期格式是不是符合
{
var strDate=obj.value;
re=/\d{4}([\-\/])\d{2}\1\d{2}/g
if(re.test(strDate))//判断日期格式符合YYYY-MM-DD标准
{
var strRe=RegExp.$1;
var DateArray=strDate.split(strRe);
var dateElement=new Date(DateArray[0],parseInt(DateArray[1])-1,DateArray[2]);
if(!((dateElement.getFullYear()==parseInt(DateArray[0]))&&((dateElement.getMonth()+1)==parseInt(DateArray[1]))&&(dateElement.getDate()==parseInt(DateArray[2]))))//判断日期逻辑
{
alert("不符合时间逻辑")
obj.value='';
}
else
{
alert("正确")
}
}
else
{
alert("格式输入错误")
obj.value='';
}

}
</script>
<input name=time1 onblur=checkDate(this)>

解决方案 »

  1.   

    ^((((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[-/]))$/
    则可!!
      

  2.   

    日期校验
    <script language="JavaScript">
    <!--
    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 date= new Date(year,month,0);
    return date.getDate();
    }
    function isLeapYear(year){
    if((year %4==0 && year %100!=0) || (year %400==0)) return true;
    else return false;
    }
    alert(CheckDate("2007-02-29"));
    //-->
    </script>
    关于日期的常见操作
    http://community.csdn.net//Expert/TopicView2.asp?id=4360247&datebasetype=now
    js FAQ贴
    http://community.csdn.net//Expert/TopicView2.asp?id=4356360&datebasetype=now
    DHTML手册,js手册,dom手册下载
    http://community.csdn.net//Expert/TopicView2.asp?id=4356325&datebasetype=now