【问题标题】:Regular Expression match day [closed]正则表达式比赛日[关闭]
【发布时间】:2017-07-07 07:23:01
【问题描述】:

我正在学习 C# 中的 Regex,我编写了代码来检查有效日期,但 Regex.Match 始终为 false。

var pat = @"(today|tomorrow|yesterday)((?:\s*[+-]?\s*\d+\s*[dwym])*)"; // Can not change

Match match = Regex.Match(value, pat);

match.Success 始终为 false(值 = 2017-07-07)

哪种格式可以与该模式匹配?

【问题讨论】:

  • 如果您的value2017-07-07,则您的正则表达式无法匹配。
  • 谢谢,但您能否详细解释一下哪种格式可以与该模式匹配
  • 事实上,这种模式甚至还没有很接近。
  • 模式匹配today - 9 y, tomorrow + 1 w, etc. ...
  • 该正则表达式匹配诸如“today + 4 w - 6 w”、“tomorrow-5d”、“yesterday”之类的字符串。要匹配 yyyy-mm-dd 日期戳,您可以使用 \b\d{4}-\d{2}-\d{2}\b

标签: c# regex date expression


【解决方案1】:

你真正想要达到什么目的?从外观上看,您是在尝试匹配某些文本(今天/明天/昨天)还是特定格式的日期?

试试这个:

(today|tomorrow|yesterday|\d{4}-\d{2}-\d{2})

也尝试使用正则表达式设计器。我使用 Rad Software 正则表达式设计器 1.4。

【讨论】:

  • 永远不要相信正则表达式设计者。
  • @revo 为什么不呢?它非常适合学习,您仍然需要手动输入正则表达式...它只是一个帮助测试的工具。
  • 感谢您的建议,但我无法更改该模式,因为它是系统设计,我只是编写一个函数来检查一天是否有效。
  • @QuiNguyen Uhm,然后尝试在不使用正则表达式的情况下解析它? F.e. this method?
  • 谢谢大家,我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2017-11-13
  • 2015-04-27
相关资源
最近更新 更多