2012-06-09 104 views
0

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

该格式包括任何格式的正则表达式:DD/MM/yyyy或毫米/日/年或yyyy /日/或DD-YY-MMMM或DDMMYYYY像等等... ..

可以任何一个帮助吗?

+0

http://www.regular-expressions.info/dates.html –

+1

正则表达式对于这类事情是非常不合适的。规则太多(1到31,除非下一个块是这些数字中的一个,在这种情况下它是30,除非它是2,在这种情况下它是28,除了在闰年等)。使用适当的日期解析库。 – Quentin

+0

什么样的日期是dd-yy-mmmm?! – Quentin

回答

0

没有“完美”的解析,但我建议使用类似于datejs的东西来处理JavaScript中的日期。它可以处理许多具有各种格式支持的解析例程。

0

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

用你想要的日期分隔符在reg ex中更改#。对于一个全球性的分离器替换#(/ | - |。)

对于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})$ 

对于MM-DD-YYYY格式

^(?:(?:(?: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 

对于各种格式,请修改日期分隔符以注册并排序。