使用闰年支持验证日期格式 dd/mm/yyyy 的正则表达式 [英] Regex to validate date format dd/mm/yyyy with Leap Year Support

查看:56
本文介绍了使用闰年支持验证日期格式 dd/mm/yyyy 的正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用正则表达式验证 dd/mm/yyyy 格式的日期字符串.

I need to validate a date string for the format dd/mm/yyyy with a regular expresssion.

此正则表达式验证 dd/mm/yyyy,但不验证像 31/02/4500 这样的无效日期:

This regex validates dd/mm/yyyy, but not the invalid dates like 31/02/4500:

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

什么是验证具有闰年支持的 dd/mm/yyyy 格式的有效正则表达式?

What is a valid regex to validate dd/mm/yyyy format with leap year support?

推荐答案

您粘贴的正则表达式不能正确验证闰年,但有一个可以在同一帖子中.我将其修改为 dd/mm/yyyydd-mm-yyyydd.mm.yyyy.

The regex you pasted does not validate leap years correctly, but there is one that does in the same post. I modified it to take dd/mm/yyyy, dd-mm-yyyy or dd.mm.yyyy.

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

我在 Arun 在他的回答中提供的链接以及 此处 中对其进行了一些测试,它似乎有效.

I tested it a bit in the link Arun provided in his answer and also here and it seems to work.

编辑 2019 年 2 月 14 日:我删除了正则表达式中的逗号,该逗号允许诸如 29-0,-11

Edit February 14th 2019: I've removed a comma that was in the regex which allowed dates like 29-0,-11

这篇关于使用闰年支持验证日期格式 dd/mm/yyyy 的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆