通用 C# 日期时间正则表达式,如 Microsoft 的 tryparse

本文关键字:Microsoft tryparse 正则表达式 日期 时间 通用 | 更新日期: 2023-09-27 18:16:12

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

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

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

通用 C# 日期时间正则表达式,如 Microsoft 的 tryparse

不,你不想那样做。您将不得不处理数字范围,这不是创建正则表达式的目的。更不用说每月和闰年的不同天数了。(例如,请参阅此处,此解决方案不关心闰年,仅适用于一种模式。

DateTime.Parse 方法(字符串(有什么问题?

你可以做类似的事情

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

如果t不是有效的日期时间格式,它将引发FormatException

更新:在文本中查找模式

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

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

您可以在Regexr上自己查看和测试它

简介:

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

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

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

(?: ... )?是一个非捕获组,由于末尾的?,该组(此处为时间模式(是可选的。

我认为这应该是您创建模式以查找所需的所有日期/时间格式所需的全部内容。