2015-08-28 50 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

其真正工作...非常感谢,我会更多地阅读它,并尝试自己重现它。 –