加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:24:29 所属栏目:百科 来源:网络整理
导读:正则表达式应匹配格式为YYYYMMDD的字符串中的有效日期.例如,aaa_20150327_bbb应匹配但aaa_20150229_bbb不是因为2015年不是闰年. 只有2000年到2099年才需要考虑. 完全疯狂(0-9999年) 以下(基于this答案)在0到9999之间工作多年. (?!d)(?:(?:(?:1[6-9]|[2-9]d
正则表达式应匹配格式为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]|1d|2[0-8]))(?!d)

(查看demo)

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

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

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

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

(查看demo)

理智的方式(年*)

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

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

(查看demo)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读