<script>
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
alert(strDateTime("2008-5-1 9:15:13"))
alert(strDateTime("2008-05-1 9:15:13"))
alert(strDateTime("2008-05-32 9:15:13"))
</script>
//有效日期判断函数IsValidDate()
function IsValidDate(psYear, psMonth, psDay)
{
if(psYear==null || psMonth==null || psDay==null)
{
return false;
} var sYear = new String(psYear);
var sMonth = new String(psMonth);
var sDay = new String(psDay); if(IsValidYear(sYear)==false)
{
return false;
} if(IsValidMonth(sMonth)==false)
{
return false;
} if(IsValidDay(sDay)==false)
{
return false;
} var nYear = parseInt(sYear, 10);
var nMonth = parseInt(sMonth, 10);
var nDay = parseInt(sDay, 10); if(sYear=="" && sMonth=="" && sDay=="")
{
return true;
} if(sYear=="" || sMonth=="" || sDay=="")
{
return false;
}
if(nMonth < 1 || 12 < nMonth)
{
return false;
}
if(nDay < 1 || 31 < nDay)
{
return false;
} if(nMonth == 2)
{
if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0))
{
if((nDay < 1) || (nDay > 29))
{
return false;
}
}
else
{
if((nDay < 1) || (nDay > 28))
{
return false;
}
}
}
else if((nMonth == 1) ||
(nMonth == 3) ||
(nMonth == 5) ||
(nMonth == 7) ||
(nMonth == 8) ||
(nMonth == 10) ||
(nMonth == 12))
{
if((nDay < 1) || (31 < nDay))
{
return false;
}
}
else
{
if((nDay < 1) || (30 < nDay))
{
return false;
}
} return true;
}
//有效年份判断函数IsValidYear()
function IsValidYear(psYear)
{
var sYear = new String(psYear); if(psYear==null)
{
return false;
}
if(isNaN(psYear)==true)
{
return false;
} if(sYear == "")
{
return true;
} if(sYear.match(/[^0-9]/g)!=null)
{
return false;
} var nYear = parseInt(sYear,10); if((nYear < 0) || (9999 < nYear))
{
return false;
} return true;
} //有效月份判断函数IsValidMonth()
function IsValidMonth(psMonth)
{
var sMonth = new String(psMonth); if(psMonth==null)
{
return false;
} if(isNaN(psMonth)==true)
{
return false;
} if(sMonth == "")
{
return true;
} if(sMonth.match(/[^0-9]/g)!=null)
{
return false;
} var nMonth = parseInt(sMonth,10); if((nMonth < 0) || (12 < nMonth))
{
return false;
} return true;
} //有效日判断函数IsValidDay()
function IsValidDay(psDay)
{
var sDay = new String(psDay); if(psDay==null)
{
return false;
} if(isNaN(psDay)==true)
{
return false;
} if(sDay == "")
{
return true;
} if(sDay.match(/[^0-9]/g)!=null)
{
return false;
} var nDay = parseInt(psDay, 10); if((nDay < 0) || (31 < nDay))
{
return false;
} return true;
}
if(new Date(dStr).toString()=="NaN")alert("时间格式不正确!")
else alert("时间格式正确!")
{
dStr=dStr.replace(/-/g,"/")
if(new Date(dStr).toString()=="NaN")return false;
else return true;
}
//测试用例
if(!checkDate("2008-5-1 3:15:13"))alert("时间类型错误!=====测试1");
if(!checkDate("2008-5-100 93:15:13"))alert("时间类型错误!=====测试2");
if(!checkDate("2008-13-1 93:15:13"))alert("时间类型错误!=====测试3");
{1,2})\2(\d{1,2 这里的\2是什么意思?
你那也可验证:strDateTime("2008/5/1 9:15:13"))这种吧!
如果一楼的兄弟看到,烦麻指点一下迷津
!谢谢了!
{
dStr=dStr.replace(/-/g,"/")
if(new Date(dStr).toString()=="NaN")return false;
else return true;
}
5楼解释下正规@
转换为时间类型这样的话不需要考虑闰年什么的
<script>function checkDate(dStr)
{
dStr=dStr.replace(/-/g,"/")
if(new Date(dStr).toString()=="NaN")return false;
else return true;
}
alert(checkDate("2008-5-30 3:15:90"))</script>
有问题吧?
晕,确实有问题...在firefox没问题,在ie下加时间时验证错误,没有时间是对的.....汗.......