JavaScript-c++或者javascript 判断日期的正则

JavaScript-c++或者javascript 判断日期的正则

虐人心 发布于 2017-01-25 字数 62 浏览 1092 回复 3

判断日期是否有效,比如2月没有30日。秒不超过60之类的情况

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-08-02 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>

浮生未歇 2017-05-25 2 楼

正则不能判断出闰年,只可以判断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)$

浮生未歇 2017-03-18 1 楼

判断日期是否有效,javascript不是用正则判断。C++就不知道了