RegEx匹配M / YYYY,MM / YYYY,M / YY或MM / YY格式但不匹配MM / DD / YYYY

时间:2015-12-15 06:05:35

标签: c# regex date

好吧,我已经用这个打了很长时间。我有正则表达式

^(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?

2 个答案:

答案 0 :(得分:5)

DateTime.ParseExact是解决问题的一种更具可读性和可维护性的方式:Tomcat Directory Structure

如果我是你的同事,我会讨厌阅读这个丑陋的正则表达式,因为同一个概念可以用指定的库类如此优雅地表达。

实际上更好的想法是TryParseExacthttps://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})(?!\/)