2010-11-15 57 views
4

我需要一個用於驗證輸入日期的函數。是否輸入日期格式正確。 我瀏覽網頁並獲得正則表達式。 它的工作很好,除非你輸入12/12/YYYY(在任何一年)它顯示錯誤說它不是一個有效的日期。在C#中的正則表達式.net

bool IsDate(string date) 
     { 
      Match dobMatch = Regex.Match(date, @"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[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))))$"); 
      if (!dobMatch.Success) 
      {return true;} 
      else 
      {return false;} 
     } 

回答

6

嘗試DateTime.TryParse()

這爲你解析日期。如果您想使用文化解析日期,此方法允許您傳遞CultureInfo

另外,如果你真的想要使用正則表達式,看看http://regexlib.com/這是一個正則表達式綜合庫,每個正則表達式都有評級。

+0

難道提到的功能驗證日期是否存在或不在feburary也如30/2/2011 – 2010-11-15 09:39:34

+0

是的。它只能產生('out'參數)有效的日期,包括閏年。 – 2010-11-15 09:40:27

4

你爲什麼要使用正則表達式呢?

試試這個:Validate a DateTime in C#

+0

沒有提到的功能驗證日期是否存在或不二月也喜歡30/2/2011 – 2010-11-15 09:39:00

1

一個正則表達式只驗證字符串中的字符數據,並沒有說出該字符串中數據的實際有效性。

要檢查一個字符串作爲淨有效日期使用以下命令:

DateTime dt; 
if (DateTime.TryParse(someString, out dt)) 
{ 
    //Parsed as a valid date whose value is now in the variable dt 
} 
else 
{ 
    //Not a valid date 
} 
+0

提到的函數驗證日期是否存在於feburary也像30/2/2011 – 2010-11-15 09:40:39

+0

是它的確如此,如果日期無效,那麼'TryParse'將返回false – RobV 2010-11-15 14:59:35