好吧,我已经用这个打了很长时间。我有正则表达式
^(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?
答案 0 :(得分:5)
DateTime.ParseExact
是解决问题的一种更具可读性和可维护性的方式:
如果我是你的同事,我会讨厌阅读这个丑陋的正则表达式,因为同一个概念可以用指定的库类如此优雅地表达。
实际上更好的想法是TryParseExact
:https://msdn.microsoft.com/en-us/library/332de853(v=vs.110).aspx
正如您所看到的,有一种重载可以接受多种格式,这正是您的情况,您可以通过["M/yyyy", "MM/yyyy, "M/yy", "MM/yy"]
。
以下是与您的案例非常相似的案例的代码示例:https://msdn.microsoft.com/en-us/library/h9b85w22(v=vs.110).aspx
答案 1 :(得分:1)
如果您的字符串以数字开头,则可以使用以下正则表达式。
^\d{1,2}\/(?:\d{2}|\d{4})(?!\/)