2010-12-07 94 views
0

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

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

请发表您的字符串,其中的值是 – Mariusz 2010-12-07 14:52:42

回答

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

编辑:获得初始的比赛后,尝试使用DateTime.TryParse以验证它们确实是有效的日期解析。否则,你的正则表达式将需要更复杂(见杰夫熊的答案)。

+0

你打了我几秒钟:-) – Toto 2010-12-07 14:56:59

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字符的注释。

+0

+1对自己的解释`{N,M}`表达的例子这是什么OP需要。 – Brad 2010-12-08 13:32:12

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})"); 
1

这将做的工作:

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