yyyy-mm-dd 的正则表达式日期验证 [重复]

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

^\d4\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$

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

^\d4\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$

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

\d4\-(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 你可以使用/^\d4-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/。这样,如果缺少前导零,则正则表达式将返回 false。【参考方案2】:

一个简单的应该是

\d4-\d2-\d2

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】:

你可以测试这个表达式:

^\d4[\-\/\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

以上是关于yyyy-mm-dd 的正则表达式日期验证 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于验证日期的正则表达式 [重复]

用于验证日期时间格式的正则表达式(MM/DD/YYYY)[重复]

js验证年月日(yyyy-mm-dd)格式

常用正则表达式

javascript javascript正则表达式匹配日期模式YYYY-MM-DD

常用正则表达式