2010-07-01 66 views
0

試圖爲此格式的日期創建regexdd.MM.yyyy日期格式爲dd.MM.yyyy的正則表達式?

我想用DataAnnotation使用它,這樣

[RegularExpression(@"<theregex>")] 
public DateTime Date { get; set; } 
+0

是否必須考慮像2010年2月30日這樣的無效日期以及類似的事情,還是僅僅需要提取看起來像日期的東西,然後才能檢查它們? – Chris 2010-07-01 08:31:39

+8

爲什麼你需要一個正則表達式?使用'Date.ParseExact()'會不會更好? – 2010-07-01 08:31:52

+1

@Rowland Shaw我使用xVal,它爲jquery.validation生成規則 – Omu 2010-07-01 08:33:39

回答

7

我建議正則表達式並不是完成這項工作的最好方法。你還沒有給上下文,所以很難猜你總在做什麼...但你可能要創建一個DateExpression屬性或這樣,然後做:

return DateTime.ParseExact(value, "dd.MM.yyyy"); 

無論你的轉換器定義。

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

這其中也接受 - 和/作爲分隔符。如果你願意,你可以刪除它們。

1
[0-3]{0,1}[0-9]\.[0-1]{0,1}[0-9]\.[0-9]{4,2} 

比賽: 28.2.961.11.200812.10.2005

4
^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)[0-9]{2}$ 

此正則表達式匹配01.01.190001.01.2000但不匹配1.1.20001/1/00

+0

你至少可以使0的可選...它也不匹配31.01.2000 :( – Ian 2010-07-01 08:37:23

+0

肯定會匹配31.01.2000? – Chris 2010-07-01 08:39:27

+0

31.01.2000匹配 – 2010-07-01 08:43:02

1

僅僅因爲我總是覺得這個網站有用,這裏是一個online regex checker。在右邊還有示例和社區貢獻。有許多Date匹配的正則表達式變體。

如果您不確定哪種方法最適合您,可以輸入希望匹配的日期負載並嘗試一些不同的示例。與任何事情一樣,有多種方法可以解決問題,但它可能會幫助您選擇最適合的問題。