/\d{4}-\d{2}-\d{2}/ 判断日期格式,哪里有错? /^\d{4}-\d{2}-\d{2}$/ 试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 中间的-前应加\吧,我通常是这样写的:/\d{4}\-\d{1,2}\-\d{1,2}$/这样可与类似于:2004-1-1,或者2004-12-1日这样的匹配,如果月、日一定要都两位数,就是:/\d{4}\-\d{2}\-\d{2}$/ 上礼拜正好写了一大堆正则的程序,用这个验证的比较全面String.prototype.isDate = function(){ var r = this.match(/^\b((19|20)\d{2})(1[0-2]|0?[1-9])(0?[1-9]|[12][0-9]|3[01])$/); if(r==null)return false; var d = new Date(r[1], r[3]-1, r[4]); return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);}function checkDate( formName, txtName ){ var objtxt = eval( "document." + formName + "." + txtName ); if(!objtxt.value.isDate()) { alert("日期格式错误! 正确格式举例:20050420"); objtxt.focus(); objtxt.value=""; return false; } return true;} 完整的yyyy-mm-dd格式日期检查函数:function CheckDate(strDate){ var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/; if(!reg.test(strDate)){ alert("日期格式不正确!\n正确格式为:2004-01-01"); return false; } var ss=strDate.split("-"); var year=ss[0]; var month=ss[1]; var date=ss[2]; if(!checkYear(year)){return false;} if(!checkMonth(month)){return false;} if(!checkDate(year,month,date)){return false;} return true;}function checkYear(year){ if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;} else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false} else return true;}function checkMonth(month){ if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;} else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false} else return true;}function checkDate(year,month,date){ var daysOfMonth=CalDays(parseInt(year),parseInt(month)); if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;} else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;} else return true;}function CalDays(year,month){ var days=0; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11: days=30;break; case 2: if(isLeapYear(year)) days=29; else days=28; break; } return days;}function isLeapYear(year){ if((year %4==0 && year %100!=0) || (year %400==0)) return true; else return false;} 向高手求一个字符串的js 省市二级联动菜单 搜索 时 参数 传替问题 /通过JS可行吗? 如何让表格里的所有文本框都不可用,为灰色? Ext设置联动下拉框默认值 JS在屏幕上画点、线、矩形、多边形如何实现? select无法响应双击事件? 两个关于文本框的问题,可能有点难 数据输入问题~!各位看看 先给100分:怎样使用回车键切换输入焦点? 初次学习! 请问:下面代码哪里出错了? 有点难度问题,高手请进,倾囊相送
/\d{4}\-\d{1,2}\-\d{1,2}$/
这样可与类似于:2004-1-1,或者2004-12-1日这样的匹配,如果月、日一定要都两位数,就是:
/\d{4}\-\d{2}\-\d{2}$/
{
var r = this.match(/^\b((19|20)\d{2})(1[0-2]|0?[1-9])(0?[1-9]|[12][0-9]|3[01])$/);
if(r==null)return false; var d = new Date(r[1], r[3]-1, r[4]);
return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
function checkDate( formName, txtName )
{
var objtxt = eval( "document." + formName + "." + txtName );
if(!objtxt.value.isDate())
{
alert("日期格式错误! 正确格式举例:20050420");
objtxt.focus();
objtxt.value="";
return false;
}
return true;
}
var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/;
if(!reg.test(strDate)){
alert("日期格式不正确!\n正确格式为:2004-01-01");
return false;
}
var ss=strDate.split("-");
var year=ss[0];
var month=ss[1];
var date=ss[2];
if(!checkYear(year)){return false;}
if(!checkMonth(month)){return false;}
if(!checkDate(year,month,date)){return false;}
return true;
}
function checkYear(year){
if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;}
else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false}
else return true;
}
function checkMonth(month){
if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;}
else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false}
else return true;
}
function checkDate(year,month,date){
var daysOfMonth=CalDays(parseInt(year),parseInt(month));
if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;}
else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;}
else return true;
}
function CalDays(year,month){
var days=0;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
case 4: case 6: case 9: case 11: days=30;break;
case 2: if(isLeapYear(year)) days=29;
else days=28;
break;
}
return days;
}
function isLeapYear(year){
if((year %4==0 && year %100!=0) || (year %400==0)) return true;
else return false;
}