Javascript正则表达式验证日期

Javascript正则表达式验证日期

本文介绍了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正则表达式验证日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 12:47