c# - 匹配 M/YYYY、MM/YYYY、M/YY 或 MM/YY 格式但不匹配 MM/DD/YYYY 的正则表达式

标签 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?

最佳答案

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

关于c# - 匹配 M/YYYY、MM/YYYY、M/YY 或 MM/YY 格式但不匹配 MM/DD/YYYY 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34282165/

相关文章:

c# - 如何使用正则表达式在字符之间插入空格?

javascript - 在正则表达式 Javascript 中获取内部字符串前后的字符串

r - 在变量中搜索字符串并返回匹配的字符串

java - Joda Time : Get first/second/last sunday of month

sql-server - T-SQL 如何选择最近的日期

c# - WebRequest.Create 不正确地解码 url

c# - WPF-创建可见性列表

c# - 使用 EntityFramework(数据库优先)方法的 DataAnnotations

C# 有哪些替代方法可以沿调用链传播事件?

Java 日期差异、Joda 库和 DST