日期格式的正则表达式

时间:2015-08-28 15:47:56

标签: regex asp.net-mvc validation date

我在基于ASP.NET MVC 5的Web应用程序下工作,我的项目中存在一个很大的问题,使用户能够选择在应用程序中显示日期的格式。

目标是使用用户输入的验证日期格式的正则表达式生成RegularExpressionAttribute。

可接受的格式必须是: 的米/ d / Y, 米-d-Y, 米:d:Y, d / M / Y, d-M-Y, d:M:Y, Y / M / d, Y-M-d, 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})))

这个有用......但根据我稀缺的正则表达式知识和经验,我希望得到一些帮助和更好的例子来解决这个难题。

感谢。

1 个答案:

答案 0 :(得分: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和set选项进行不区分大小写的匹配
([:/ - ])所有允许的分隔符作为组 \ 1 ... \ 3后面引用分隔符组1 ... 3