【问题标题】:simply regex date validation简单的正则表达式日期验证
【发布时间】:2016-03-07 15:46:23
【问题描述】:

我正在尝试为我的 mvc 应用程序创建简单的正则表达式验证。我试过了:

[Required]
[RegularExpression("(\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d)")]

它不工作。我想强制客户以 01/01/2015 格式输入日期

【问题讨论】:

    标签: c# regex asp.net-mvc data-annotations


    【解决方案1】:

    为什么在这种情况下需要正则表达式?使用DisplayFormatDataType

    [Required]
    [DataType(DataType.DateTime)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    

    我的意思是用正则表达式验证日期是错误的。没有简单的方法来验证日期,例如 31/02/201531/04/2015,这是无效的日期。

    【讨论】:

    • 但在这种情况下,我无法添加超过 12 天的日期
    • @UddyanSemwal 你在本地化的某个地方遇到了问题,这有点棘手,可能你应该在客户端做对,我相信你应该问另一个问题,所有 add 都可以重现这个问题并有人会帮助你。
    • 它已经解决了,因为 db 需要 yyyy-MM-dd 格式我已经改变了它的工作方式 man @teovankot
    【解决方案2】:

    可能是因为转义了这么多字符造成的混乱。

    在这里,我通过添加 @ 来转义整个字符串,并通过使用量词指定要捕获的每个数字类的多少个字符来压缩正则表达式:

    [RegularExpression(@"(\d{2}/\d{2}/\d{4})")]
    

    但是,由于您使用它来验证日期条目,因此您可能需要考虑将 DateTime 验证器用作 teo van kot has mentioned,因为此正则表达式不会强制执行有效的日期值。

    【讨论】:

    • 感谢您的帮助,我想我在其他地方犯了错误。我知道我的 reg ex 的局限性,但它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多