微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式匹配yyyymmdd中的日期格式

正则表达式应匹配格式为YYYYMMDD的字符串中的有效日期.例如,aaa_20150327_bbb应匹配但aaa_20150229_bbb不是因为2015年不是闰年.

只有2000年到2099年才需要考虑.

完全疯狂(0-9999年)

以下(基于this答案)在0到9999之间工作多年.

(?<!\d)(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))0229)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8]))(?!\d)

(查看demo)

完全疯狂简化(2000 – 2099年)

如果您愿意,可以将其简化为仅在2000年到2099年之间工作多年.

(?<!\d)(?:(?:20\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:20(?:0[48]|[2468][048]|[13579][26]))0229)|(?:20\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8]))(?!\d)

但是你可以看到它并不是那么简单.

(查看demo)

理智的方式(年*)

为了保持理智,你应该坚持使用一个非常简单的正则表达式,然后使用代码验证它.

(20\d{2})(\d{2})(\d{2})

(查看demo)

原文地址:https://www.jb51.cc/regex/356875.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐