javascript中任何格式的日期正则表达式?

javascript中任何格式的日期正则表达式?,javascript,Javascript,javascript中任意格式的日期正则表达式 格式包括:dd/mm/yyyy或mm/dd/yyyy或yyyy/dd/mm或dd-yy-mm或ddmmyyyy等 有谁能帮忙吗?没有“完美”的解析,但我建议在javascript中使用类似的方法来处理日期。它可以处理多种格式支持的解析例程。Reg Ex用于考虑闰年的日期。它是为as3编写的,但由于js和as3都是ECMAScript的派生版本,所以它在js中也应该可以正常工作 使用所需的日期分隔符更改注册表中的#。对于全局分隔符,将#替换为(/|-

javascript中任意格式的日期正则表达式

格式包括:dd/mm/yyyy或mm/dd/yyyy或yyyy/dd/mm或dd-yy-mm或ddmmyyyy等


有谁能帮忙吗?

没有“完美”的解析,但我建议在javascript中使用类似的方法来处理日期。它可以处理多种格式支持的解析例程。

Reg Ex用于考虑闰年的日期。它是为as3编写的,但由于js和as3都是ECMAScript的派生版本,所以它在js中也应该可以正常工作

使用所需的日期分隔符更改注册表中的#。对于全局分隔符,将#替换为(/|-|)

对于DD-MM-YYYY格式

^(?:31#(?:(?:0[13578])|(?:1[02]))#)|(?:(?:29|30)#(?:(?:0[1,3-9])|(?:1[0-2]))#)(?:(?:1[6-9]|[2-9]\d)\d{2})$|^(?:29#02#(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1\d)|(?:2[0-8]))#(?:(?:0[1-9])|(?:1[0-2]))#(?:(?:1[6-9]|[2-9]\d)\d{2})$
^(?:(?:(?:0?[13578]|1[02])#31)\1|(?:(?:0?[1,3-9]|1[0-2])#(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2#29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))#(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
对于MM-DD-YYYY格式

^(?:31#(?:(?:0[13578])|(?:1[02]))#)|(?:(?:29|30)#(?:(?:0[1,3-9])|(?:1[0-2]))#)(?:(?:1[6-9]|[2-9]\d)\d{2})$|^(?:29#02#(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1\d)|(?:2[0-8]))#(?:(?:0[1-9])|(?:1[0-2]))#(?:(?:1[6-9]|[2-9]\d)\d{2})$
^(?:(?:(?:0?[13578]|1[02])#31)\1|(?:(?:0?[1,3-9]|1[0-2])#(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2#29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))#(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
性能测试

29-02-2000 ---> true
millis 2
29-02-2006 ---> false
millis 0
29-02-2001 ---> false
millis 0
30-02-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
29-13-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
31-07-2000 ---> true
millis 0
31-08-2000 ---> true
millis 1
31-12-2000 ---> true
millis 0
30-11-2011 ---> true
millis 0
17-07-2011 ---> true
millis 0
04-10-1987 ---> true
millis 0
01-01-1900 ---> true
millis 0
24-05-88 ---> false
millis 0
24-05-88 ---> false
millis 0
29-12-2011 ---> true
millis 0
31-12-2000 ---> true
millis 0
1-1-2010 ---> false
millis 0
1-1-99 ---> false
millis 0
1-01-99 ---> false
millis 0
01-1-99 ---> false
millis 0

对于各种格式,请修改日期分隔符reg ex和排序

正则表达式对于这类事情是非常不合适的。规则太多了(1到31,除非下一个区块是这些数字中的一个,在这种情况下它是30,除非它是2,在这种情况下它是28,除了闰年,等等)。使用合适的日期解析库。dd-yy-mmmm是什么类型的日期?!您将如何解析日期
2012年4月1日
?一月四日还是四月一日?正则表达式如何正确解析它?