【问题标题】:Regular Expression Date and Time正则表达式日期和时间
【发布时间】:2015-03-12 02:02:29
【问题描述】:

大家好,我有以下明确的验证

    [Required]
    [RegularExpression("{0:d/M/yyyy HH:mm:ss}" , 
    ErrorMessage = "Wrong Syntax")]
    public string Posted { get; set; }` 

但它不允许以下输入显示为日期和时间的示例: 12/12/2011 00:00:00(我不想要这些确切的数字,日期和时间应该允许日期和时间标准逻辑上允许的任何数字)

即使我输入了正确的代码,我也会收到错误消息“错误的语法”。似乎是什么问题。任何帮助将不胜感激,非常感谢您

【问题讨论】:

  • 您的正则表达式看起来像日期/时间格式字符串,而不是正确的正则表达式。
  • 为什么Posted 属性使用string 而不是DateTime

标签: c# asp.net asp.net-mvc-3 razor


【解决方案1】:

这是因为RegularExpressionAttribute 需要正则表达式模式,而您提供的是 .NET 字符串格式模式 (MSDN: RegularExpressionAttribute Class)。

对于 basic 格式验证,您需要使用以下内容:

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

【讨论】:

  • 一个 .NET 日期和时间格式字符串,特别是(GUID 和数字也有格式字符串)。
  • 我会尝试您的答案并报告,谢谢,如果它有效,它将作为正确的解决方案,如果不是,则会通知错误
  • 玩了之后还是不行还是报unrecognized escape sequence的错误
  • @user1137472 尝试在字符串前添加一个@,如下所示:[RegularExpression(@"\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2}:\d{2,2}")]。这将使编译器接受该字符串,即使它包含无法识别的转义序列(如\d)。
  • 你能请教一下 d{2,2) 等数字是什么意思吗...意味着它足够有效,但不是那种得到答案然后走开的人,我真的很喜欢你的解释谢谢
【解决方案2】:

用真正的正则表达式替换 RegularExpression 属性中的字符串。尝试从这个正则表达式库站点中的一个:

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5&AspxAutoDetectCookieSupport=1

尝试第一个。

【讨论】:

  • 在这个网站上,我在发布问题之前做了我的研究,即使它们看起来合乎逻辑,但它们没有给出正确的验证,我也无法让它们工作
【解决方案3】:

有关 MVC 中客户端和服务器验证的完整指南(使用类似 TextBoxFor 的东西),请在此处查看我的答案: Validate Date in MM/dd/YYYY format in mvc

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 2021-09-09
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多