<script language=javascript>
function replace(str, oldStr, newStr) {
var buffer = "" ;
var length = oldStr.length;
var beginIndex = 0;           
if (length > 0) {
index = str.indexOf(oldStr);
while (index >= 0) {
buffer = buffer + str.substring(beginIndex, index);
buffer = buffer + newStr;
beginIndex = index + length;
index = str.indexOf(oldStr, beginIndex);
}
}
buffer = buffer + str.substring(beginIndex);
return buffer ;
}
function checkdate(str) { 
var datestr =str;
var lthdatestr=str.length ; 
var tmpy="";
var tmpm="";
var tmpd="";
var status; 
status=0; 
var status1; 
status1=0;

if (datestr=="") return true; for (i=0;i<lthdatestr;i++) { 
if (datestr.charAt(i)== '/') { 
status++; 


}
if (status>2||status==1) {
return false; 

for (i=0;i<lthdatestr;i++) { 
if (datestr.charAt(i)== '-') { 
status1++; 


}
if (status1>2||status1==1) { 
return false; 


status=0; 
datestr = replace(datestr, "-", "/") if (lthdatestr== 0) {
return false; 
}
for (i=0;i<lthdatestr;i++) { 
if (datestr.charAt(i)== '/') { 
status++; 

if (status>2) { 
return false; 
}  if ((status==0) && (datestr.charAt(i)!='/')) { 
tmpy=tmpy+datestr.charAt(i) 

if ((status==1) && (datestr.charAt(i)!='/')) { 
tmpm=tmpm+datestr.charAt(i) 

if ((status==2) && (datestr.charAt(i)!='/')) { 
tmpd=tmpd+datestr.charAt(i) 


year=new String (tmpy); 
month=new String (tmpm); 
day=new String (tmpd) 
if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2)) { 
return false; 

if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) ) { 
return false; 

if (!((year % 4)==0) && (month==2) && (day==29)) {
return false; 
}
if ((month<=7) && ((month % 2)==0) && (day>=31)) { 
return false; 

if ((month>=8) && ((month % 2)==1) && (day>=31)) { 
return false; 

if ((month==2) && (day==30)) { 
return false; 

return true; 

</script>调用checkdate(要验证的日期字符串)
验证通过返回true,否则返回false