我在基于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})))
这个有用......但根据我稀缺的正则表达式知识和经验,我希望得到一些帮助和更好的例子来解决这个难题。
感谢。
答案 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