2015-08-28 42 views
0

我在基於ASP.NET MVC 5的Web應用程序下工作,我的項目中有一個很大的問題,該字段使用戶能夠選擇在應用程序中顯示日期的格式。用於日期格式的正則表達式

目標是使用正則表達式爲用戶輸入的驗證日期格式生成RegularExpressionAttribute。

可接受的格式必須是: 米/ d/Y, MDY, 米:d:Y, d/M/Y, DMY, d:M:Y, Y/M/d , YMD, Y:米:d

和日期符號的長度可以是如'Y'到目前爲止'YYYY'。它們可以是大寫字母

所以經過硬編碼的我做了一個可以接受的:

((([mM]{1,4})([\/]{1})([dD]{1,4})([\/]{1})([yY]{1,4}))|(([mM]{1,4})([\-]{1})([dD]{1,4})([\-]{1})([yY]{1,4}))|(([mM]{1,4})([\:]{1})([dD]{1,4})([\:]{1})([yY]{1,4})))|((([dD]{1,4})([\/]{1})([mM]{1,4})([\/]{1})([yY]{1,4}))|(([dD]{1,4})([\-]{1})([mM]{1,4})([\-]{1})([yY]{1,4}))|(([dD]{1,4})([\:]{1})([mM]{1,4})([\:]{1})([yY]{1,4})))|((([yY]{1,4})([\/]{1})([mM]{1,4})([\/]{1})([dD]{1,4}))|(([yY]{1,4})([\-]{1})([mM]{1,4})([\-]{1})([dD]{1,4}))|(([yY]{1,4})([\:]{1})([mM]{1,4})([\:]{1})([dD]{1,4})))|((([yY]{1,4})([\/]{1})([dD]{1,4})([\/]{1})([mM]{1,4}))|(([yY]{1,4})([\-]{1})([dD]{1,4})([\-]{1})([mM]{1,4}))|(([yY]{1,4})([\:]{1})([dD]{1,4})([\:]{1})([mM]{1,4}))) 

這一個工程......但據我的正則表達式稀缺的知識和經驗,我希望能得到一些幫助和更好的例子來解決這個難題。

謝謝。

回答

0

你必須概括一下。

m{1,4}([:/-])d{1,4}\1y{1,4}|d{1,4}([:/-])m{1,4}\2y{1,4}|y{1,4}([:/-])m{1,4}\3d{1,4} 

說明:
代替例如[mm]的使用m和設置選項不區分大小寫匹配
([:/ - ])所有允許的定界符作爲組 \ 1 ... \ 3回參考定界符組1 ... 3和

+0

其真正工作...非常感謝,我會更多地閱讀它,並嘗試自己重現它。 –