2014-06-10 35 views
0

我想這適用於下列標準的日期時間正則表達式:DateTime的正則表達式驗證

  1. 日期時間必須是MM/DD/YYYY HH:MM:SS AM/PM

  2. 如果隻日期以MM/dd/yyyy輸入,那麼它也是有效的。

  3. 在日期月份和日期必須在兩位數。

我試過以下的正則表達式,但它沒有爲一些日期一樣工作:2012年12月12日

[RegularExpression(@"^((((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9]))))[\-\/\s]?\d{2}(([02468][048])|([13579][26])))|(((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))[\-\/\s]?\d{2}(([02468][1235679])|([13579][01345789]))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$", ErrorMessage = "Please enter valid date.")] 
+0

這**正則表達式** .. 。爲什麼你不通過解析驗證日期? –

+0

@UlugbekUmirov,怎麼樣?我不知道這種方法? – Dhwani

+0

舉例:[使用數據註釋進行DateTime(日期和小時)驗證](http://stackoverflow.com/questions/5390403/datetime-date-and-hour-validation-with-data-annotation)。順便說一句,你的正則表達式接受'12/12/2012'沒有問題:http://regex101.com/r/mQ8qA4 –

回答

2

如果堅持正則表達式的解決方案,我修改了你的一個位(將其限制規則您提供):

^(?:(?:(?:(?:(?:(?:0[13578])|(?:1[02]))\/(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[01])))|(?:(?:(?:0[469])|11)\/(?:(?:0[1-9])|(?:[1-2][0-9])|30))|(?:02\/(?:(?:0[1-9])|(?:[1-2][0-9]))))\/\d{2}(?:(?:[02468][048])|(?:[13579][26])))|(?:(?:(?:(?:(?:0[13578])|(?:1[02]))\/(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[01])))|(?:(?:(?:0[469])|(?:11))\/(?:(?:0[1-9])|(?:[1-2][0-9])|(?:30)))|(?:02\/(?:(?:0[1-9])|(?:1[0-9])|(?:2[0-8]))))\/\d{2}(?:(?:[02468][1235679])|(?:[13579][01345789]))))(?:\s(?:(?:(?:0[1-9])|(?:1[0-2]))\:(?:[0-5][0-9])(?:\:(?:[0-5][0-9])\s))(?:AM|PM|am|pm))?$ 

Regular expression visualization

Demo

略微簡化的正則表達式(正確驗證的日期在0000-9999範圍):

^(?:(?:(?:(?:(?:0[13578]|1[02])\/(?:0[1-9]|[1-2][0-9]|3[01]))|(?:(?:0[469]|11)\/(?:0[1-9]|[1-2][0-9]|30))|(?:02\/(?:0[1-9]|1[0-9]|2[0-8]))))\/\d{4}|02\/29\/(?:(?:\d{2}(?:04|08|[2468][048]|[13579][26]))|(?:(?:[02468][048])|[13579][26])00))(?:\s(?:0[1-9]|1[0-2])\:[0-5][0-9]\:[0-5][0-9]\s(?:AM|PM|am|pm))?$ 

Regular expression visualization

Demo

+0

深藍色和淡藍色有什麼區別? – Dhwani

+0

@Dhwani這些只是替代顏色,所以你不認爲這是一個單一的比賽。 –

+1

+1用於改變矩陣的顏色,我厭倦了黑色和綠色。 :) – zx81