function checkIsValidDate(str)
{
    //如果为空,则通过校验
    if(str == "")
        return true;    var pattern = /^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g;
    if(!pattern.test(str))
        return false;
    var arrDate = str.split("-");
    if(parseInt(arrDate[0],10) < 100)
        arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
    var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
    if(date.getYear() == arrDate[0]
       && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
       && date.getDate() == arrDate[2])
        return true;
    else
        return false;
}//~~~

解决方案 »

  1.   

    <script>
    function isDate(str)
    {
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
        result = str.match(reg);
        if(result == null)return false;
        var d = new Date(result[1],result[3]-1,result[4])
        var newStr = d.getFullYear()+result[2]+(d.getMonth()+1)+result[2]+d.getDate();
        return str == newStr
    }
    alert(isDate("2004-5-1"))
    alert(isDate("2004-5-32"))
    alert(isDate("2004-2-30"))
    </script>
      

  2.   

    <script>
    function isDate(str)
    {
        var d = new Date(str)
        return !isNaN(d)
    }
    </script>