【问题标题】:Regex date validation for yyyy-mm-dd [duplicate]yyyy-mm-dd 的正则表达式日期验证 [重复]
【发布时间】:2014-03-30 11:33:15
【问题描述】:

日期格式 yyyy-mm-dd 的正则表达式是什么?

我想验证来自 edittext 的电子邮件并检查它是否与正则表达式匹配。

【问题讨论】:

  • 也可以看看右边的“相关”部分,有很多类似的请求RegEx字符串进行日期验证的案例。
  • 检查这个答案可能会有所帮助stackoverflow.com/a/2149698/2675669

标签: java android regex validation date


【解决方案1】:

这将匹配yyyy-mm-ddyyyy-m-d

^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$

如果您正在寻找与 yyyy-mm-dd 完全匹配的内容,请尝试此操作

^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$

如果您需要在The date is 2017-11-30 之类的字符串中查找日期,请使用此日期

\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*

https://regex101.com/r/acvpss/1

【讨论】:

  • 你是如何制作图表的?
  • @AllanXu 来自名为 debuggex 的站点
  • 不完整!正则表达式也匹配 2016-02-31 而它不应该匹配:(
  • @Djack 你在说什么?如果您想在其上强制执行实际日期,则正则表达式不是这样做的方法。解析日期并确保它在您使用的任何语言中都有效。这只是确保它的数字,用连字符分隔,并且有一天是可行的(小于 32)
  • @AlanH 你可以使用/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/。这样,如果缺少前导零,则正则表达式将返回 false。
【解决方案2】:

一个简单的应该是

\d{4}-\d{2}-\d{2}

Debuggex Demo

但这并不限制月份为 1-12 和天从 1 到 31。

还有更复杂的检查,就像其他答案一样,顺便说一句非常聪明的检查。不过,您必须检查有效日期,因为没有检查一个月是否有 28、30 或 31 天。

【讨论】:

  • 哇。近 4 年后的第一次投反对票。这不值得另一个徽章吗? ;)
  • 是的,它仍然应该被否决。这个答案是完全错误的,因为它不是日期验证的正则表达式。
  • 为什么完全错了?正则表达式和规定的限制是正确的。我错过了什么?
  • 仅将此评论添加到此答案也是一种误导。从这个意义上说,其他答案也是不正确的,因为它们也无法验证它。但是,如果您愿意,我会将其称为评论或大评论。
  • 赞成以弥补反对票,因为这是唯一真正承认其局限性的答案。例如,较高投票的答案不会使 2 月 31 日无效。使用正则表达式捕获文本字段并使用其他完整性检查进行验证。
【解决方案3】:

您可以使用此正则表达式获取 yyyy-MM-dd 格式:

((?:19|20)\\d\\d)-(0?[1-9]|1[012])-([12][0-9]|3[01]|0?[1-9])

您可以找到日期验证的示例:How to validate date with regular expression.

【讨论】:

  • 他想要 yyyy-mm-dd。
  • 我已经更新了我的答案。
【解决方案4】:

你可以测试这个表达式:

^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$

说明:
验证 yyyy-mm-dd、yyyy mm dd 或 yyyy/mm/dd 日期

确保日期在该月的有效范围内 - 不验证闰年的 2 月 29 日,只有那个 2 月可以有 29 天

匹配(已测试):0001-12-31 | 9999 09 30 | 2002/03/03

【讨论】:

  • 为什么这个答案被否决了?它对我来说非常有效
  • 您能否编辑答案并将代码放入代码标签中。
  • 编辑成标签:)
  • 接受 2000-02-29 和 2001-02-29 作为匹配项
  • 但日期可能是 00
猜你喜欢
  • 2012-03-06
  • 2013-07-04
  • 2013-04-04
  • 1970-01-01
  • 2013-02-18
  • 2017-07-10
  • 2022-01-04
  • 2020-04-09
相关资源
最近更新 更多