2010-08-01 56 views
-1

我想要一個正則表達式來驗證類型的日期「13/08/2010」如何使它?如何創建此ASP.NET的驗證器

+5

你試過搜索嗎? – 2010-08-01 06:53:09

+1

在「正則表達式驗證dd/MM/yyyy」上使用您的google fu 如果這是UI驗證,那麼請注意,如果您使用的是vanilla asp.net驗證程序,您還需要添加非空驗證程序。 – StuartLC 2010-08-01 06:57:02

+0

是的搜查它,但有一些問題,那裏我得到了解決方案,謝謝 – NoviceToDotNet 2010-08-01 07:50:53

回答

3
<asp:TextBox runat="server" ID="txtDate" /> 
<asp:CustomValidator runat="server" ControlToValidate="txtDate" ErrorMessage="Error" OnServerValidate="customValidator_ServerValidate" /> 

protected void customValidator_ServerValidate(object sender, ServerValidateEventArgs e) 
{ 
    DateTime d; 
    e.IsValid = DateTime.TryParse(
      e.Value, 
      System.Globalization.CultureInfo.InvariantCulture, 
      "dd/MM/yyyy", 
      out d); 

    // or if you want to try all available formats, not only the specific one 
    e.IsValid = DateTime.TryParse(
      e.Value, 
      out d); 
} 

請參閱MSDN:

1

dd/MM/yyyy的正則表達式。它也將支持閏年...

^(((0 [1-9] | [12] \ d | 3 [01])/(0 [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))))$

Regular Expression Library

或者你也可以使用CompareValidator與Type="Date"

5

使用正則表達式可能是錯誤的事情,在這裏做。你真的想從你的用戶是一個有效的日期,對吧?但是你必須考慮到本地化和日期在不同文化中表現不同的事實。如果來自美國的人使用您的應用程序,他們可能不明白爲什麼2010年1月23日不是有效的日期,他們是什麼時間。

相反,您應該使用compare validatorOperator property設置爲'DataTypeCheck'。這允許用戶以他們熟悉的任何格式輸入日期,並且您仍然可以驗證它們是日期。舉例:

<asp:CompareValidator id="DateCompareValidator" runat="server" 
    Type="Date" Operator="DataTypeCheck" ControlToValidate="TextboxDate" 
    ErrorMessage="Please enter a valid date."> 
</asp:CompareValidator>