本问题已经有最佳答案,请猛点这里访问。
日期格式yyyy-mm-dd的正则表达式是什么?
我想验证来自edittext的电子邮件,并检查它是否与正则表达式匹配。
也可以在"相关"部分的右侧查看,在很多情况下,都需要使用RegEx字符串进行日期验证。
检查此答案可能有帮助stackoverflow.com/a/2149698/2675669
这将匹配yyyy-mm-dd以及yyyy-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天)
@Vinod的正则表达式允许9(没有前面的0)匹配为true。这是故意的吗?
@AlanH您可以使用^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$。这样,如果缺少前导零,则正则表达式将返回false。
但它也接受2017-02-31
它也匹配2017-0210-31
这不能很好地工作,它接受yyyy-m-d,没有严格执行yyyy-mm-dd
它匹配" 1984-9-35"的" 1984-9-3"部分。
一个简单的是
\d{4}-\d{2}-\d{2}
Debuggex演示
但这并不将月份限制为1到12,将日期限制为1到31。
像其他答案一样,还有更复杂的检查,非常聪明。但是,您必须检查一个有效的日期,因为不会检查一个月是否有28、30或31天。
哇。将近4年后的第一次投票。这不值得再加上一个徽章吗? ;)
是的,它仍然应该被否决。这个答案是完全错误的,因为它不是用于日期验证的正则表达式。
为什么明明是错误的?正则表达式和规定的限制是正确的。我想念什么?
它不是问题的真正答案,因为它不验证日期,仅验证" 4位数字后接破折号,然后是2位数字,然后是破折号再加上2位数字"。就像说2 + 2是3,但您需要添加1。
仅将此注释添加到此答案也是误导性的。从这个意义上讲,其他答案也是不正确的,因为它们也不完整,无法对其进行验证。但是,如果您愿意,我可以称其为评论或大型评论。
它的选票太多,尤其是它的事实。
您可以使用此正则表达式获取yyyy-MM-dd格式:
((?? 19 | 20) d d)-(0?[1-9] | 1 [012])-([12] [0-9] | 3 [01] | 0?[1-9 ])
您可以找到日期验证的示例:如何使用正则表达式验证日期。
他想要yyyy-mm-dd。
我已经更新了答案。
您可以测试此表达式:
^\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日期
确保日期在该月的有效范围内-不验证a年2月29日,只有2月可以有29天
匹配项(经过测试):0001-12-31 | 9999 09 30 | 2002/03/03
为什么这个答案被否决?对我来说效果很好
您可以编辑答案并将代码放入代码标签中吗?
编辑成标签:)
这同时接受2000-02-29和2001-02-29作为匹配项