通用C#DateTime正则表达式,如Microsoft的tryparse

时间:2011-11-28 15:08:05

标签: c# .net regex

我想创建一个通用的DateTime正则表达式,它将匹配所有可能的C#DateTime格式,如Microsoft的TryParse。

MM/dd/Year
dd/MM/Year
dd/MM/YY
MM/dd/YY
dd/MM/Year hh:mm
...

你有什么建议吗? 如果它很简单,我也可以将日期与时间分开。并为Date创建一个正则表达式,为Time创建一个正则表达式。

1 个答案:

答案 0 :(得分:5)

不,你不想这样做。您将不得不处理数字范围,而不是创建正则表达式。不要谈论每月和闰年的不同天数。 (参见例如here,此解决方案不关心闰年,仅适用于一种模式。)

DateTime.Parse Method (String)怎么了?

您可以执行类似

的操作
string t = "01/01/1899";
DateTime Date = DateTime.Parse(t);

如果FormatException不是有效的DateTime格式,则会引发t

更新:在文本中查找模式

好的,要在文本中找到日期/时间模式,而不进行验证,您可以尝试这样的事情:

\b\d{1,2}/\d{1,2}/\d{2,4}(?:\s+\d{1,2}:\d{1,2})?\b

您可以自己查看和测试here on Regexr

简介:

\b是一个单词边界,它确保在第一个数字之前和最后一个数字之后既不是另一个数字也不是字母。

\d是一个数字。 \d{1,2}是一位或两位数。

\s是一个空格。 \s+是一个或多个空格。

(?: ... )?是一个非捕获组,因为最后?这个组(这里是时间模式)是可选的。

我认为应该主要是创建模式以找到所需的所有日期/时间格式。