【问题标题】:Validate date field in asp.net using validator control使用验证器控件验证 asp.net 中的日期字段
【发布时间】:2012-08-01 09:20:42
【问题描述】:

我的页面中有以下 validator 控件。

<asp:CompareValidator ID="cvPatientDateOfBirth" runat="server"
        ControlToValidate="txtPatientDateOfBirth"  
        ErrorMessage="Enter proper date.(DD/MM/YYYY)" 
        Font-Bold="True" Operator="GreaterThan"  Display="Dynamic"
        ValidationGroup="FirstPreview" CssClass="validatorMsg" 
        SetFocusOnError="True" ValueToCompare="1/1/1100" Type="Date" >
    </asp:CompareValidator>
  • 当我输入 12/09/1900 时,它正在正确验证。 [好]
  • 当我输入 12/09/1009 时,它没有正确验证。 [好]
  • 当我输入 12/09/09 时,它正在验证。 [不打算]。在这种情况下,我希望它仅在日期年份为 4 位时验证。否则显示错误信息。

如果我同时使用 compare validator 进行日期类型检查并使用 正则表达式验证器 进行年份(4digit)检查,则“12/02/198”会显示错误消息两个验证器。

谁能告诉我怎么做?

谢谢。

【问题讨论】:

  • Aghilas Yakoub 的回答是有效的。但我想知道是否有任何方法可以使用比较验证器来做到这一点。如果有人对如何使用比较验证器完成此操作有任何想法,请告诉我。

标签: asp.net regex validation date comparevalidator


【解决方案1】:

您可以使用RegularExpressionValidator并设置ValidationExpression

ValidationExpression = "\d{1,2}\/\d{1,2}/\d{4}"

【讨论】:

  • 但如果日期输入为“50/50/1900”,则它正在验证这一点。因为这不是一个有效的日期。
  • 对不起,我不在这里,试试这个^(((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))))$
  • 您能否仅将验证表达式添加为注释?我怀疑您评论末尾的 $ 是什么。谢谢。
【解决方案2】:

这个正则表达式工作正常

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

【讨论】:

  • 这个正则表达式可以根据我的需要工作。它只允许 4 位数的年份。此外,我们的日期不能大于 31,月份不能大于 12。
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 2012-03-11
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多