<script language=javascript>
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
alert(strDateTime("2002-01-31"));
alert(strDateTime("2002-01-41"));
</script>
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
alert(strDateTime("2002-01-31"));
alert(strDateTime("2002-01-41"));
</script>
上次是通过正则表达式验证。很经典!
var endvalue;
endvalue=true;
datestr=new String(datestr);
if (datestr.lastIndexOf("-")==-1 && datestr.lastIndexOf("年")==-1 && datestr.lastIndexOf("\/")==-1 && datestr.lastIndexOf(".")==-1) {
endvalue=false;
} else {
if (datestr.length>11) {
endvalue=false;
} else {
allowstrlist="1234567890-.年月/日";
for (i=0;i<datestr.length;i++) {
if (allowstrlist.indexOf(datestr.substr(i,1))==-1) {
endvalue=false;
break;
}
}
var labcount,labvalue;
labcount=0;
labvalue="";
allowlablist="年月/日-.";
for (i=0;i<datestr.length;i++) {
if (allowlablist.indexOf(datestr.substr(i,1))!=-1) {
tmpvalue=allowlablist.substr(allowlablist.indexOf(datestr.substr(i,1)),1);
if (labvalue=="" || (labcount!=0 && labvalue!=tmpvalue)) {
labcount=labcount+1;
}
labvalue=tmpvalue;
}
}
if (labcount>1) {
if (tmpvalue!="月" && tmpvalue!="年" && tmpvalue!="日") {
endvalue=false;
} else {
if (datestr.lastIndexOf("年")==-1 || datestr.lastIndexOf("月")==-1 || datestr.lastIndexOf("日")==-1) {
endvalue=false;
}
}
}
if (endvalue) {
if (labvalue=="月" || labvalue=="日") {
labvalue="年";
}
tmpvalue=datestr.substring(0,datestr.indexOf(labvalue));
if (tmpvalue.length>4) {
endvalue=false;
} else {
tmpposition=datestr.indexOf(labvalue)+1;
if (labvalue=="年") {
labvalue="月";
}
tmpvalue=datestr.substring(tmpposition,datestr.indexOf(labvalue,tmpposition));
if (tmpvalue.length>2) {
endvalue=false;
} else {
if (tmpvalue>12) {
endvalue=false;
} else {
tmpposition=datestr.indexOf(labvalue,tmpposition)+1;
if (labvalue=="月") {
labvalue="日";
tmpvalue=datestr.substring(tmpposition,datestr.indexOf(labvalue,tmpposition));
} else {
tmpvalue=datestr.substr(tmpposition);
}
if (tmpvalue.length>2) {
endvalue=false;
} else {
if (tmpvalue>31) {
endvalue=false;
}
}
}
}
}
}
}
}
return(endvalue);
}