【问题标题】:How do I check for multiple date formats in Regex?如何在 Regex 中检查多种日期格式?
【发布时间】:2010-12-07 14:48:36
【问题描述】:

我正在寻找一个字符串以提取格式为 mm/dd/yyyy、m/d/yyyy、m/dd/yyyy 或 mm/d/yyyy 的 2 个日期值。如何将该条件添加到我的正则表达式?

private static readonly Regex dateRegex = new Regex(@"\d{2}/\d{2}/\d{4}");

【问题讨论】:

  • 请发布您的字符串示例,其中值在

标签: c# regex validation datetime


【解决方案1】:
private static readonly Regex dateRegex = new Regex(@"\d{1,2}/\d{1,2}/\d{4}");

编辑:在获得初始匹配后,尝试使用DateTime.TryParse 解析它们以验证它们确实是有效日期。否则,您的正则表达式将需要更加复杂(请参阅 Jeff the Bear 的回答)。

【讨论】:

    【解决方案2】:

    这样就可以了:

    \d{1,2}\/\d{1,2}\/\d{4}
    

    【讨论】:

      【解决方案3】:

      带有“或”。在正则表达式“|”中:

      "(regex1 | regex2)"
      

      喜欢:

      Regex dateRegex = new Regex(@"(\d{1,2}/\d{1,2}/\d{4}|\d{1,2}\.d{1,2}\.d{1,4})");
      

      【讨论】:

        【解决方案4】:

        使用像这样的正则表达式(option1|option2)

        | 是一个 OR。

        但是阅读您的示例,我认为您不需要它。试试这个吧。

        (?<month>[0-9]{1,2})\/(?<day>[0-9]{1,2})\/(?<year>[0-9]{4})
        

        {n,m} 子句中,n 是必须匹配的最小数字,而m 是最大数字。

        注意:这里某处的帖子上有评论说使用[0-9] 而不是\d,因为\d 也可以匹配一些Unicode 字符。

        【讨论】:

        • +1 给我自己解释 {n,m} 表达式,这是 OP 需要的。
        猜你喜欢
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多