本文介绍了Javascript正则表达式验证日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不太熟悉正则表达式。我正在为mm.dd.yyyy,mm / dd / yyyy或mm-dd-yyyy编写正则表达式。这是我到目前为止,我完全不确定我是否接近。 ^ [0-9] {4 } - ((0 [13578] |(10 | 12)) - (0 [1-9] | [1-2] [0-9] | 3 [0-1]))|(02- [1-9] | [1-2] [0-9]))|((0 [469] | 11) - (0 [1-9] | [1-2] [0-9] | 30) ))$
谢谢
解决方案
我已经看到一些怪物正则表达式来匹配实际的日期 - 例如,不匹配04/31 / yyyy,或者02-29-2011。
尝试从输入中输入日期更简单,然后检查输入。
函数isvalid_mdy (s){
var day,A = s.split(/ \D + /)。map(function(itm){
return parseInt(itm,10)
});
try {
day = new Date(A [2],A [0] -1,A [1]);
if(day.getMonth()+ 1 == A [0]&& day.getDate()== A [1])return day;
throw'Bad Date Format';
}
catch(呃){
return NaN;
}
}
var s1 = '04 / 31/2011';
isvalid_mdy(s1)
/ *返回值:(Number)
NaN
* /
I am rather unfamiliar with regular expressions. I am trying to write a regular expression for mm.dd.yyyy, mm/dd/yyyy or mm-dd-yyyy. This is what I have so far, I am completely unsure if I am even close.
^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$
Thanks
解决方案
I have seen some monster regular expressions to match actual dates- they would not match 04/31/yyyy, for instance, or 02-29-2011.
It is simpler to try to make a date from the input, and then check the input.
function isvalid_mdy(s){
var day, A= s.split(/\D+/).map(function(itm){
return parseInt(itm, 10)
});
try{
day= new Date(A[2], A[0]-1, A[1]);
if(day.getMonth()+1== A[0] && day.getDate()== A[1]) return day;
throw 'Bad Date Format';
}
catch(er){
return NaN;
}
}
var s1= '04/31/2011';
isvalid_mdy(s1)
/* returned value: (Number)
NaN
*/
这篇关于Javascript正则表达式验证日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!