【问题标题】:Regex not able to detect ,(comma)正则表达式无法检测到,(逗号)
【发布时间】:2021-09-18 00:40:55
【问题描述】:

我正在尝试验证日期字符串,为此我编写了以下正则表达式字符串

[0-3]*\d{1}(st|nd|rd|th)?[\s\-\/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d{1})[\s\-\/,]?(\d{4}|\d{2})

我的正则表达式的字符串输入是"31st March, 2018"

我已经在我的正则表达式字符串([\s\-\/,] 部分)中包含了,(逗号字符),但上述输入无法验证。

谁能指出上面的正则表达式字符串需要什么更正,以便它可以检测到字符串中的,(comma) 字符?

【问题讨论】:

标签: c# regex


【解决方案1】:

您缺少逗号和年份之间的空格。你应该添加 \s?在匹配逗号的块之后。

[0-3]?\d{1}(st|nd|rd|th)?[\s\-\/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d{1})[\s\-\/,]?\s?(\d{4}|\d{2})

另外,您不需要在 [] 中转义字符,或者指定一个量词以仅匹配一个字符,因此您只需将正则表达式更改为:

[0-3]?\d(st|nd|rd|th)?[ -/]?(Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|[0-1]?\d)[ -/,]?\s?(\d{4}|\d{2})

demo

PS:我对 C# 了解不多,所以不能代表其他人推荐使用 Datetime,但听起来可能值得一试。

【讨论】:

  • 是的。你的回答让我意识到我正在做的错误。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多