用于验证日期的正则表达式 - C#

时间:2010-12-10 05:42:22

标签: c# regex

我正在使用calenderExtender控件来获取用户的日期。文本框可以由用户手动编辑。我使用RegularExpressionValidator来验证输入日期。我需要的输入格式是

MMM dd, yyyy

现在我使用下面显示的正则表达式来验证日期

  ((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec)){1}\s?\d{1,2},\s?\d{4}

工作正常。但它不会根据月份检查输入日期是否小于28,30或31。例如:12月有31天。如果用户输入的值大于31,则表达式必须捕获该值。 任何使用常规exptression实现这一点的想法

2 个答案:

答案 0 :(得分:5)

您要执行的验证(不包括基于月份的无效日期范围)实际上不适合正则表达式。您应该解析月,日和年,然后根据解析的值进行验证。试图通过正则表达式来实现它将是痛苦的,难以维护。

或者,您是否考虑过使用DateTime.Parse

答案 1 :(得分:1)

如果您认为这很糟糕,请等到您尝试支持闰年。是的,通常情况就是“我怎么做(插入困难的任务)与正则表达式?”问题,最好的方法是完全避免使用正则表达式。你可以使用RangeValidator吗?否则,正如JSBangs指出的那样,你可以使用自定义验证器和DateTime的解析方法。