Javascript 使用正则表达式验证日期

Javascript 使用正则表达式验证日期,javascript,regex,validation,Javascript,Regex,Validation,我需要一个正则表达式来匹配以下模式- mm/dd/yyyy 以下日期条目应通过验证: 2012年3月5日 2012年3月5日 2012年5月3日 2012年5月3日 此外,在验证上述regex之后,将上述日期字符串转换为日期对象的最佳方法是什么?此方法应能: ((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\

我需要一个正则表达式来匹配以下模式-

mm/dd/yyyy
以下日期条目应通过验证:

  • 2012年3月5日
  • 2012年3月5日
  • 2012年5月3日
  • 2012年5月3日
此外,在验证上述
regex
之后,将上述日期
字符串
转换为
日期
对象的最佳方法是什么?

此方法应能:

((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])
(摘自txt2re.com)

您还应该看一看。

这个应该可以:

((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])
(摘自txt2re.com)


您还应该查看一下。

您应该使用split、parseInt和:


与本页的其他答案一样,这一点在2月31日不会被扼杀。这就是为什么对于所有严肃的目的,您应该使用一个库,例如。

您应该使用split、parseInt和:

与本页的其他答案一样,这一点在2月31日不会被扼杀。这就是为什么对于所有严肃的目的,您应该使用类似的库

链接:


链接:

简单地调整日期组件的顺序简单地调整日期组件的顺序安装解决方案,但它很乐意接受99/99/99作为有效日期。JavaScript日期函数将从任何数值生成有效的日期。您应该在调用日期之前验证它们。@HBP+1您是对的。。。我没有想到这一点。我会解决的。@HBP但作为这里的其他答案,它仍然对2012年2月31日感到满意。所以我建议使用Datejs之类的库(或者其他库,但我使用Datejs没有问题)。这是一个有趣的解决方案,但它很乐意接受99/99/99作为有效日期。JavaScript日期函数将从任何数值生成有效的日期。您应该在调用日期之前验证它们。@HBP+1您是对的。。。我没有想到这一点。我会解决的。@HBP但作为这里的其他答案,它仍然对2012年2月31日感到满意。所以我建议使用像Datejs这样的库(或者其他库,但我使用Datejs没有问题)。
01/22/2012 ==> Sun Jan 22 2012 00:00:00 GMT+0100 (CET)
07/5/1972 ==> Wed Jul 05 1972 00:00:00 GMT+0100 (CEST)
999/99/1972 ==> invalid
"/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/"
var dateStr = '01/01/1901',
    dateObj = null,
    dateReg = /^(?:0[1-9]|1[012]|[1-9])\/(?:[012][1-9]|3[01]|[1-9])\/(?:19|20)\d\d$/;
    //             01 to 12 or 1 to 9   /    01 to 31  or  1 to 9   /  1900 to 2099

if( dateStr.match( dateReg ) ){
    dateObj = new Date( dateStr ); // this will be in the local timezone
}