2013-10-07 206 views
1

我刚学正则表达式和我创建了一个DD-MM-YYYY日期验证使用正则表达式:RegExp的日期验证在JavaScript

^(0[1-9]|[12][0-9]|3[01])([-/.])(0[1-9]|1[0-2])\2(19|20)\d\d$ 

Regular expression visualization

Debuggex Demo

它似乎做工精细。但我想知道是否有任何改进可以确保不会有错误。有什么建议么?

+0

这种验证是不可能的(或者,至少不是实际的)正则表达式。日期不是字符串。 – georg

+0

1/1/2000怎么样似乎是一个有效的数据给我,不是每个人都加上领先0 –

回答

2

为什么要重新发明轮子。借助内置的日期解析方法Date.parse(String)这样的:

var timestamp = Date.parse(str); // str is your input string for data 
var date = null 
if (isNaN(timestamp) == false) 
    date = new Date(timestamp); 
else 
    alert("Invalid date"); 
+0

Date.parse包装无效日期,因此'2013-02-29'将被验证。 – georg

1

也许你想包括moment.js到您的项目?然后你可以写:

moment("not a real date").isValid(); // false 

如果你愿意,你也可以使用你自己的格式化字符串。 ;-)这也会给你的好处是,如果日期实际存在,那么它很适合(想想29-02-2013,这是不存在的)。

+0

是的,这是应该如何做。 – georg