【问题标题】:How to creat validator for this ASP.NET [closed]如何为此 ASP.NET 创建验证器 [关闭]
【发布时间】:2010-08-01 06:50:15
【问题描述】:

我想要一个正则表达式来验证“2010 年 13 月 8 日”类型的日期如何制作?

【问题讨论】:

  • 在“regex validate dd/MM/yyyy”上使用你的 google fu 如果这是 UI 验证,那么请注意,如果你使用的是 vanilla asp.net 验证器,你还需要添加一个 not -null 验证器。
  • 是的,已经搜索过了,但是有一些问题,我得到了解决方案,谢谢

标签: asp.net .net validation


【解决方案1】:

在这里使用正则表达式可能是错误的。您真正希望用户提供的是一个有效日期,对吧?但是您必须考虑本地化以及日期在不同文化中的表示方式不同这一事实。如果来自美国的人在使用您的应用,他们可能无法理解为什么 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>

【讨论】:

    【解决方案2】:
    <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:

    【讨论】:

      【解决方案3】:

      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" 一起使用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多