正则表达式匹配日期

时间:2009-12-09 08:45:27

标签: c# regex

需要在用户提交的字符串中匹配日期 它应该使用这些不同的格式

jan 1 2000
january 1 2000
jan. 1 2000
1/1/2000
2000
january

你会怎么写这个正则表达式?

5 个答案:

答案 0 :(得分:5)

我不会使用RegExp:

DateTime attempt;
if (DateTime.TryParse(inputDate, out attempt)
{
  // You're good to go.
}

但这会与“1月”或“2000”的“日期”相悖。

答案 1 :(得分:2)

即使这些是唯一允许的格式,使用正则表达式也很难,因为它涉及检查月份名称是否有效,检查日期是否在给定月份(4月31日等)有效,闰年等

像其他人建议的那样使用DateTime类。

答案 2 :(得分:1)

您先看过DateTime.TryParse吗?可能它会使你免于使用正则表达式,除了一些特殊情况。

答案 3 :(得分:1)

我的事情太复杂了,无法用正则表达式进行验证。

更好地使用DateTime.TryParse

由于31/30/29/28天/月以及September 1752等特殊情况,使用正则表达式确认日期真的很难。

答案 4 :(得分:1)

这是胜利还是网络应用程序?如果对于Windows只使用DateTime.TryParse,但如果它是用于web,则使用javascript代替。

对于javascript,请参阅this post