【问题标题】:Regex validate date and month [duplicate]正则表达式验证日期和月份[重复]
【发布时间】:2015-04-20 07:55:11
【问题描述】:

我正在尝试以以下格式验证日期和月份:

MM/dd

现在,我正在使用这个正则表达式来验证:

(0[1-9]|1[0-2])\/(3[0-1]|2[0-9]|1[0-9]|0[1-9])

并且正则表达式成功验证了这些格式:

    //Below are valid dates    
    09/05
    01/01
    12/30
    10/30
    //Below are invalid dates
    11/31
    09/31

如何修改正则表达式以便它也检查月份中的天数?

【问题讨论】:

  • 12/31 怎么无效? 12 月 31 日?
  • 哦,对不起,我把日期改成了 11/31...

标签: c# regex datetime


【解决方案1】:

我不认为正则表达式是这样做的正确方法。使用DateTime 解析而不是MM/yy 格式和将/ 作为DateSeparator 的文化。

string s = "12/31";
DateTime dt;
if(DateTime.TryParseExact(s, "MM/dd", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    // Valid
}

顺便说一句,SeptemberNovember30 天,而不是 31。这就是09/3111/31 无效的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    相关资源
    最近更新 更多