如何在Regex中检查多种日期格式?

时间:2010-12-07 14:48:37

标签: c# regex validation datetime

我正在查找字符串,以mm / dd / yyyy,m / d / yyyy,m / dd / yyyy或mm / d / yyyy格式提取2个日期值。如何将该条件添加到我的正则表达式?

private static readonly Regex dateRegex = new Regex(@"\d{2}/\d{2}/\d{4}");

4 个答案:

答案 0 :(得分:6)

private static readonly Regex dateRegex = new Regex(@"\d{1,2}/\d{1,2}/\d{4}");

修改:获取初始匹配后,尝试使用DateTime.TryParse解析它们,以验证它们确实是有效日期。否则你的正则表达式将需要更加复杂(参见Jeff the Bear的回答)。

答案 1 :(得分:1)

这将完成这项工作:

\d{1,2}\/\d{1,2}\/\d{4}

答案 2 :(得分:0)

使用像(option1|option2)

这样的正则表达式

|是一个OR。

但是阅读您的示例,我认为您不需要它。试试这个。

(?<month>[0-9]{1,2})\/(?<day>[0-9]{1,2})\/(?<year>[0-9]{4})

{n,m}条款中,n是必须匹配的最小数字,而m是最大数字。

注意:这里有关于帖子的评论,其中涉及使用[0-9]代替\d,因为\d也可以匹配某些帖子unicode characters。

答案 3 :(得分:0)

带“OR”。在正则表达式“|”:

"(regex1 | regex2)"

像:

Regex dateRegex = new Regex(@"(\d{1,2}/\d{1,2}/\d{4}|\d{1,2}\.d{1,2}\.d{1,4})");