【问题标题】:best date regex mm/dd/yyyy最佳日期正则表达式 mm/dd/yyyy
【发布时间】:2013-03-28 11:00:26
【问题描述】:

请帮我找到日期格式mm/dd/yyym/d/yyyy 的最佳正则表达式。

我尝试了不同的链接,但每个人都有一些问题。所以请帮我解决这个问题。

What is the MM/DD/YYYY regular expression and how do I use it in php?

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5

http://www.regular-expressions.info/regexbuddy/datemmddyyyy.html

【问题讨论】:

  • 为什么需要正则表达式?你想达到什么目的?
  • 您到底尝试了哪些方法以及遇到了哪些问题?
  • @Oded 我想以给定的格式验证日期
  • 我不能对正则表达式发表评论(如果可能的话,它会很复杂),但我可以告诉你,通常人们使用日期格式 yyyyMMdd。如果日期是这种格式,在进行比较时可以将它们视为数字,并且可以进行数字排序。

标签: asp.net regex date date-format


【解决方案1】:

使用DateTime.TryParse 重载之一(或DateTime.TryParseExact,如果您想要更多控制)来验证字符串是否是DateTime 的有效表示。

DateTime dt;
if(DateTime.TryParse(someInputString, out dt)
{
  // it is valid and dt can be used
}

这将是比正则表达式更好的方法 - 它更快、经过良好测试并且会生成有效的 DateTime 对象。

【讨论】:

  • 与自定义验证器结合使用?
【解决方案2】:

如果您需要一个正则表达式,那么这样的方法可以工作(在大多数情况下,因为它允许 2 月 31 日)。

(0?\d|1[012])\/([012]?\d|3[01])\/\d{4}

通常最好使用 DateTime 解析来验证日期格式。就像DateTime.TryParseExact 方法一样。您可以在浏览器中使用正则表达式(在 JavaScript 中),但您应该在服务器端真正使用 DateTime 解析。

【讨论】:

  • 当日期周围可能有其他文本时,这似乎是一个更好的解决方案,这恰好是我的情况。谢谢。
猜你喜欢
  • 2017-07-10
  • 2022-01-04
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多