使用正则表达式匹配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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |