日期正则表达式问题,高手进
本人对正则表达式 不太明白!请指点!!!
^((((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-))$
这个日期正则表达式只支持 YYYY-MM-DD的形式 ,请各位帮个忙 改称 YYYY-MM-DD或YYYY/MM/DD这两种形式都可以的 万分谢谢!!
问题点数:50、回复次数:5Top
1 楼hbhbhbhbhb1021(天外水火(我要多努力))回复于 2006-03-03 17:13:53 得分 15
这个为什么要用正则,如果你想改的话就把
第一个-改成
[\-\/]
之后全改成这个\数字,上面那个是第几个括号就是几
我觉得不要用正则,给你段代码
<script langauge=javascript>
function checkDate(obj)//判断日期格式是不是符合
{
var strDate=obj.value;
re=/\d{4}([\-\/])\d{2}\1\d{2}/g
if(re.test(strDate))//判断日期格式符合YYYY-MM-DD标准
{
var strRe=RegExp.$1;
var DateArray=strDate.split(strRe);
var dateElement=new Date(DateArray[0],parseInt(DateArray[1])-1,DateArray[2]);
if(!((dateElement.getFullYear()==parseInt(DateArray[0]))&&((dateElement.getMonth()+1)==parseInt(DateArray[1]))&&(dateElement.getDate()==parseInt(DateArray[2]))))//判断日期逻辑
{
alert("不符合时间逻辑")
obj.value='';
}
else
{
alert("正确")
}
}
else
{
alert("格式输入错误")
obj.value='';
}
}
</script>
<input name=time1 onblur=checkDate(this)>Top
2 楼ywj41(虾米)回复于 2006-03-03 17:22:11 得分 0
大哥 昨天你就给我了 5555Top
3 楼yuweijiawangxiaodan(YY)回复于 2006-03-03 17:25:04 得分 15
^((((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[-/]))$/
则可!!Top
4 楼zhaoxiaoyang(梅雪香@深圳)回复于 2006-03-03 19:44:02 得分 20
日期校验
<script language="JavaScript">
<!--
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 date= new Date(year,month,0);
return date.getDate();
}
function isLeapYear(year){
if((year %4==0 && year %100!=0) || (year %400==0)) return true;
else return false;
}
alert(CheckDate("2007-02-29"));
//-->
</script>
关于日期的常见操作
http://community.csdn.net//Expert/TopicView2.asp?id=4360247&datebasetype=now
js FAQ贴
http://community.csdn.net//Expert/TopicView2.asp?id=4356360&datebasetype=now
DHTML手册,js手册,dom手册下载
http://community.csdn.net//Expert/TopicView2.asp?id=4356325&datebasetype=now
Top
5 楼LinTiger(沧海一粟)回复于 2006-03-21 10:46:14 得分 0
收藏Top




