JavaScript-c++或者javascript 判断日期的正则
判断日期是否有效,比如2月没有30日。秒不超过60之类的情况
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
判断日期是否有效,比如2月没有30日。秒不超过60之类的情况
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
首先要说一下,正则的作用是在于判断一个字符串的格式是否正确,而判断日期是否正确,这已经超出了格式的范畴,因为日期有闰年和平年之分,这是逻辑上的问题。比如正则可以判断一个人的姓名格式是不是中文,但是不能判断这个姓名是不是真有其人,那是业务的范畴了。
以下给你修改了一个JS判断日期和时间格式的函数,你看一下
<script>
function isDate(str){
//--- 一般输入性判断
var arr = str.split(" ");
var times = arr[1].split(":");
var Strs = arr[0].split("-");
if(Strs.length!=3){return 0;};
var AYear=Strs[0],AMonth=Strs[1],ADay=Strs[2];
if((AYear.length!=4)||(AMonth.length!=2)||(ADay.length!=2)){return 0;}
if(!/^(d)+$/.test(AYear)||!/^(d)+$/.test(AMonth)||!/^(d)+$/.test(ADay)){return 0;}
var tempYear,tempMonth,tempDay;
//--- 非闰年的每个月天数
var constMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
tempYear = parseInt(AYear);
if((tempYear>2100)||(tempYear<1900)){return 0;}
tempMonth = parseInt((AMonth.substring(0,1)=="0")?AMonth.substring(1,2):AMonth);
tempDay = parseInt((ADay.substring(0,1)=="0")?ADay.substring(1,2):ADay);
//--- 判断月合法性
if( (tempMonth==0)||(tempMonth>12) ){return 0;}
if(tempMonth != 2){
if((tempDay > constMonth[tempMonth - 1]) || (tempDay == 0)){return 0;}
}else{ //--- 根据闰年判断
if((tempYear%4==0)&&(tempYear%100!=0)||(tempYear%400==0)){
if((tempDay>29)||(tempDay==0)){return 0;}
}else{
if((tempDay>constMonth[1])||(tempDay==0)){return 0;}
}
}
//验证时间
if(parseInt(times[0]) <0 || parseInt(times[0]) > 11){return 0;}
if(parseInt(times[1]) <0 || parseInt(times[1]) > 59){return 0;}
if(parseInt(times[2]) <0 || parseInt(times[2]) > 59){return 0;}
return 1;
}
alert(isDate('2012-02-30 10:59:10'));
</script>
正则不能判断出闰年,只可以判断28,29了
部分日期格式(例:2010-12-31)
^((((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]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
时间部分格式(例:9:37)
^([01]d|2[0-3]):([0-5]d):([0-5]d)$
判断日期是否有效,javascript不是用正则判断。C++就不知道了