d.getMonth是0-11,所以需要+1<script>
function dateCheck(str){
var reg = /^(\d{1,4})(-|\/)(0?)(\d{1,2})\2(\d{1,2})$/; 
var r = str.match(reg); 
if(r==null)return false; 
var d= new Date(r[1], r[4]-1,r[5]); 
var newStr=d.getFullYear()+r[2]+r[3]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
alert(dateCheck("2002/01/31"))
alert(dateCheck("2002-01-31"))
alert(dateCheck("2002-02-31"))
alert(dateCheck("2002-01-41"))
</script>