好吧,我已经用这个打了很长时间.我有一个正则表达式
^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)
这将匹配8/15,08/15,8/2015,08/2015所有我需要的.到现在为止还挺好.但我不需要的是它与08/01/2015匹配,但我在08/01获得部分比赛.我怎么忽略08/01/2015?
DateTime.ParseExact
是一种解决问题的可读性和可维护性更强的方法:https://msdn.microsoft.com/en-us/library/332de853(v = vs.110).aspx
如果我是你的同事,我会讨厌阅读这个丑陋的正则表达式,因为相同的概念可以用指定的库类如此优雅地表达.
实际上更好的想法是TryParseExact
:https://msdn.microsoft.com/en-us/library/h9b85w22(v = vs.110).aspx
正如您所看到的,有一种重载可以接受多种格式,这正是您的情况,您可以通过["M/yyyy", "MM/yyyy, "M/yy", "MM/yy"]
.
以下是与您的案例非常类似的代码示例:https://stackoverflow.com/a/18247797/326370