如何为此ASP.NET创建验证器

时间:2010-08-01 06:50:16

标签: asp.net .net validation

我想要一个正则表达式来验证类型日期“13/08/2010”如何制作它?

3 个答案:

答案 0 :(得分:5)

在这里使用正则表达式可能是错误的。您真正希望从您的用户那里得到的是一个有效的日期,对吗?但是你必须考虑到本地化以及日期在不同文化中的表现方式不同的事实。如果来自美国的某个人正在使用您的应用程序,他们可能无法理解为什么01/23/2010不是有效日期,何时对他们来说是。

相反,您应该使用compare validatorOperator property设置为“DataTypeCheck”。这允许用户以他们熟悉的任何格式输入日期,您仍然可以验证它们是日期。一个例子:

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

答案 1 :(得分: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:

答案 2 :(得分:1)

dd / MM / yyyy的正则表达式。它也将支持闰年...

^(((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))))$

Regular Expression Library

或者您也可以将CompareValidator与Type="Date"

一起使用