2010-12-07 57 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}