网上找的巨牛的验证日期和时间的正则表达式为什么到我这里就不管用呢?
function isDate(str)
{
var sReg = "^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ ";
//alert(sReg);
//var reg = new RegExp(sReg, "i ");
var reg = new RegExp(sReg);
if(!reg.test(str))
{
return false;
}
return true;
}
哪位大虾帮我看看!
/^([0-9]{4}\-(0?4|0?6|0?9|11)\-([0-2]?[0-9]|30)|[0-9]{4}\-(0?1|0?3|0?5|0?7|0?8|10|12)\-([0-2]?[0-9]|3[0-1])|(?:[0-9]{2}([02468][048]|[13579][26]))\-0?2\-[0-2]?[0-9]|(?![0-9]{2}([02468][048]|[13579][26]))[0-9]{4}\-0?2\-([01]?[0-9]|2[0-8]))-([0-1]?[0-9]|2[0-4])-([0-5]?[0-9]|60)-([0-5]?[0-9]|60)$/
这个也不中,晕
[解决办法]
确实牛
给你这个看看
//完整的日期验证函数
function CheckDate( str )
{
var re=/^\d{4}-\d{1,2}-\d{1,2}$/;
var r=str.match(re);
if (r==null)
{
alert( "请按以下格式填写日期: yyyy-mm-dd! ");
return false;
}
else
{
var s=str.split( "- ");
var years = parseInt(s[0]);
var months = parseInt(s[1]);
var days = parseInt(s[2]);
if (parseInt(s[0].substring(0,2)) <19 || months> 12 || months <1 || days> 31 || days <1)
{
alert(请填写正确的日期);
return false
}
switch(months)
{
case 2:
if((years%4 == 0 && years%100 != 0) || (years%400 == 0))
{
if(days > 29)
{
alert(闰年二月没有+days+日!);
return false;
}
}
else
{
if(days > 28)
{
alert(平年二月没有+days+日!);
return false;
}
}
break;
case 4:
if(days > 30)
{
alert(四月没有+days+日!);
return false;
}
break;
case 6:
if(days > 30)
{
alert(六月没有+days+日!);
return false;
}
break;
case 9:
if(days > 30)
{
alert(九月没有+days+日!);
return false;
}
break;
case 1:
if(days > 30)
{
alert(十一月没有+days+日!);
return false;
}
break;
}
return true;
}
}
[解决办法]
好像判断有问题哦。
<script language= "javascript ">
var date1= "2007-05-31 ";
if(isDate(date1))
{alert( "ok ");}
else
{alert( "no ");}
function isDate(str)
{
var sReg = "^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ ";
//alert(sReg);
//var reg = new RegExp(sReg, "i ");
var reg = new RegExp(sReg);
if(!reg.test(str))
{
return false;
}
return true;
}
</script>
不管date1的日期是什么格式的,总是返回“No "
[解决办法]
这个正则表达式就是考虑的全面一些。
你把他们分组分别测试一下,在合并测试以下,就会找到问题的所在了。
Y-MM-DD包含的几个并列表达式
HH:MM:SS只有后面的表达式
[解决办法]
var sReg = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$ ";
[解决办法]
var isDate = function (a, b, c) {
var a = parseInt(a), b = parseInt(b), c = parseInt(c), date = new Date(a, -- b, c);
return (a == date.getFullYear() && b == date.getMonth() && c == date.getDate());
};
alert(isDate.apply(null, "2009-03-01 ".split( "- ")) && isDate.apply(null, "2009-02-01 ".split( "- ")));