function isDate(str)
{
return /^(?:(?:(?:(?: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]))$/.test(str);
}
{
return /^(?:(?:(?:(?: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]))$/.test(str);
}
var reg = /^(\d{4})(\d{2})(\d{2})$/;
var r = str.match(reg);
if(r==null)return false;
r[2]=r[2]-1;
var d= new Date(r[1], r[2],r[3]);
if(d.getFullYear()!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
return true;
}
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>