2012-06-09 87 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 

對於各種格式,請修改日期分隔符以註冊並排序。