yyyy-mm-dd的正则表达式日期验证

时间:2014-02-27 07:22:36

标签: java android regex validation date

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

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

4 个答案:

答案 0 :(得分:72)

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

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

Regular expression visualization

如果您正在寻找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

答案 1 :(得分:16)

一个简单的就是

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

Regular expression visualization

Debuggex Demo

但这不会将月份限制为1-12,将日期限制为1到31。

其他答案中有更复杂的检查,顺便说一下非常聪明。然而,您必须检查有效日期,因为没有检查是否有一个月有28天,30天或31天。

答案 2 :(得分:4)

您可以使用此正则表达式获取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.

答案 3 :(得分:3)

你可以测试这个表达式:

^\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年3月3日