javascript中的RegExp日期验证

javascript中的RegExp日期验证,javascript,regex,Javascript,Regex,我刚刚学习了正则表达式,并使用正则表达式创建了dd-mm-yyyy日期验证程序: ^(0[1-9]|[12][0-9]|3[01])([-/.])(0[1-9]|1[0-2])\2(19|20)\d\d$ 它似乎工作得很好。但我想知道是否有任何改进可以确保没有错误。有什么建议吗?也许你想把它包括在你的项目中?然后你可以写: moment("not a real date").isValid(); // false 如果愿意,也可以使用自己的格式字符串。;-)这也会给你一个好处,那就是如果

我刚刚学习了正则表达式,并使用正则表达式创建了dd-mm-yyyy日期验证程序:

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

它似乎工作得很好。但我想知道是否有任何改进可以确保没有错误。有什么建议吗?

也许你想把它包括在你的项目中?然后你可以写:

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

如果愿意,也可以使用自己的格式字符串。;-)这也会给你一个好处,那就是如果这个日期确实存在(想想2013年2月29日,它并不存在)。

为什么要重新发明轮子。借助内置的日期解析方法,如下所示:

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");

Date.parse包装了无效的日期,因此将对
2013-02-29
进行验证。对于正则表达式,这种验证是不可能的(或者至少是不实用的)。日期不是字符串。2000年1月1日对我来说似乎是一个有效的数据,不是每个人都添加前导0