关于验证 日期的js脚本。

zhangzs8896 2005-09-15 12:56:09
我按搜索结果写了2个函数,分别验证长日期与短日期。
我如何更改为一个函数,使它即可以验证长日期也可以验证短日期?
我写的函数如下:
function IsShortDateTime(obj)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var str=obj.value;
var r = str.match(reg);
if(r==null)
{
alert('输入的参数不是时间格式');
obj.value="";
obj.focus();
}
else if(r[3]>12 || r[4]>=31)
{
alert("日期超出范围");
obj.value="";
obj.focus();
}
}

function IsLongDateTime(obj)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
var str=obj.value;
var r = str.match(reg);

if(r==null)
{
alert('输入的参数不是时间格式\n'+"格式应为:"+"2005-09-15 11:10");
obj.value="";
obj.focus();
}
else if(r[3]>12 || r[4]>31)
{
alert("'日期部分'超出范围\n-->"+r[3]+"月"+r[4]+"日???!!!");
obj.value="";
obj.focus();
}
else if(r[5]>=24 || r[6]>=60)
{
alert("'时间部分'超出范围\n-->"+r[5]+"时"+r[6]+"分???!!!");
obj.value="";
obj.focus();
}

}
...全文
298 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzhouen 2005-10-26
  • 打赏
  • 举报
回复
你的这个验证还存在问题,对于月份和天数的判断太简单了!对于闰年判断好象没有输入2005-2-31,你的判断会仍然认为是合法日期
dreamover 2005-09-19
  • 打赏
  • 举报
回复
/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(?:\s+(\d{1,2}):(\d{1,2}):(\d{1,2}))*$/g

这个是有秒的,如果允许没有秒的话那是

/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(?:\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))*)*$/g
dreamover 2005-09-19
  • 打赏
  • 举报
回复
里面那句“var s="",x;”是多余的,忘了去了,请去掉
dreamover 2005-09-19
  • 打赏
  • 举报
回复
<script language="javascript">
function isDatetime(str){
var s="",x;
var re=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(?:\s+(\d{1,2}):(\d{1,2}):(\d{1,2}))*$/g;
if(re.exec(str)==null){
alert("不是合法日期,请检查格式!");
}else{
try{
var tempdt=new Date(RegExp.$1,RegExp.$3,RegExp.$4,RegExp.$5,RegExp.$6,RegExp.$7);
//alert(tempdt.toString());
}catch(e){
alert("格式正确,但不是合法日期!");
}
}
}
</script>

我写的一个,有个问题是月份,日期,时间超出后并不会抛出异常,而是加上去(例如输入1980-11-40,后日期会自动设为1980-12-9),你如果想要检查超没超出的话,你再根据你的要求修改一下吧
zhangzs8896 2005-09-19
  • 打赏
  • 举报
回复
顶一下,或者大家可否写一个两者都适合的正则表达式?
谢谢了/
zhangzs8896 2005-09-15
  • 打赏
  • 举报
回复
这样不行啊
dreamover 2005-09-15
  • 打赏
  • 举报
回复
function IsDateTime(obj){
return IsShortDateTime(obj) || IsLongDateTime(obj);
}
思路这样,上面程序改一下就行了
zhangzs8896 2005-09-15
  • 打赏
  • 举报
回复
老大,别光up呀,帮我一下呀
gu1dai 2005-09-15
  • 打赏
  • 举报
回复
up

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧