确实牛
给你这个看看
//完整的日期验证函数
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;
}
}
给你这个看看
//完整的日期验证函数
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;
}
}
解决方案 »
- 100分,JS问题,在线等待。
- 图片链接
- js:变量比较问题
- 请求一下JavaScript改成vbscript,在线等
- 假如一个页面里有数个submit按纽,提交本页时,如何知道是点的哪个按纽呢
- <EMBED src=".....>播放音乐时的问题
- 为什么用onclick都可以,用onmousedown就不行?
- 如何让div图层在所有(一个网页)元素中在最下边显示,即不能遮掩其他诸如文本框一类的……help
- 如何获得所有的ID,并判断其中一个是我想要操作的ID
- easyui datagrid detailview
- 自动分配id用getElementById找不到?
- FF获取浏览器地址中的中文问题?
<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 = "";var reg = new RegExp(sReg);
if(!reg.test(str))
{
return false;
}
return true;
}这个流程对吗?
var str=" ";
var reg=/正则/;
if(!reg.test(str))
{alert("ok")}
else
{alert("no")}就可以判断了
去掉也不行啊!
\d需要变成\\d才行
能不能换别的方法?不用改的?
<head>
<title>验证shijian函数</title>
</head>
<body>
<script >
function regex()
{
var regex=/^(19|20)[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])\s+(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/g;
var str = document.form1.name1.value;
var result = regex.test(str);
alert(result);
}
</script>
<form name=form1>
<input type=text name=name1 >
<input type=button onClick="regex()" value="test">
</form>
</body>
</html>
只能验证YYYY-MM-DD HH:MM:SS格式
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("-")));
唯一的遗憾就是:2006-02-30 12:50:29这个也能通过,没有闰月的考虑,不过也能用,我是配合时间控件来使用的!