2013-10-07 229 views
1

我剛學正則表達式和我創建了一個DD-MM-YYYY日期驗證使用正則表達式:RegExp的日期驗證在JavaScript

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

Regular expression visualization

Debuggex Demo

它似乎做工精細。但我想知道是否有任何改進可以確保不會有錯誤。有什麼建議麼?

+0

這種驗證是不可能的(或者,至少不是實際的)正則表達式。日期不是字符串。 – georg

+0

1/1/2000怎麼樣似乎是一個有效的數據給我,不是每個人都加上領先0 –

回答

2

爲什麼要重新發明輪子。藉助內置的日期解析方法Date.parse(String)這樣的:

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

Date.parse包裝無效日期,因此'2013-02-29'將被驗證。 – georg

1

也許你想包括moment.js到您的項目?然後你可以寫:

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

如果你願意,你也可以使用你自己的格式化字符串。 ;-)這也會給你的好處是,如果日期實際存在,那麼它很適合(想想29-02-2013,這是不存在的)。

+0

是的,這是應該如何做。 – georg