是不是主要用来判断当前月到底有多少天?参考下面代码:<script language="javascript">
function getLastDay(year,month)
{
 var new_year = year;    //取当前的年份
 var new_month = month;//取下一个月的第一天,方便计算(最后一天不固定)
 if(month>=12)            //如果当前大于12月,则年份转到下一年
 {
  new_month -=12;        //月份减
  new_year++;            //年份增
 }
 var new_date = new Date(new_year,new_month,1);                //取当年当月中的第一天
 return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
}
</script>
这样就能返回你指定的某一个月一共有多少天了,你只需要判断一下输入的日期是否小于这个数字就行了。

解决方案 »

  1.   

    YYYY-MM-DD 基本上把闰年和2月等的情况都考虑进去了   ^((((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.   


    <head>
    <script>
    function check_date(ob){
    var str=/^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$/;
    if( str.test(ob) ){
    alert("true");
    }else{
    alert("false");
    }
     }
    </script>
    </head>
    <body>
    <input id="test5" onblur="check_date(this.value)"/>YYYY-MM-DD   YYYY/MM/DD   YYYY.MM.DD<br/>
    </body>
      

  3.   

    想用JS自己的Date类型来判断,如果有上面不当之处请大家指出。从字符串取年月日我就不写了。
    <script language="JavaScript">
    var year = 2007;
    var month = 2;
    var date = 29;
            var dd = new Date(year,month-1,date); 
    var resMonth = dd.getMonth()+1;
    var resDate = dd.getDate(); if (month == resMonth && date == resDate) {
    alert("right");
    } else {
    alert("Date invalid!");
      }
    </script>