日期正则表达式(包括闰年的计算)
发布时间:2020-12-14 02:05:23 所属栏目:百科 来源:网络整理
导读:分析: 中国式日期为“年-月-日” 年:1到任意在于1的整数,不能“0”开头。 月:1到12。 日:1、3、5、7、8、10、12月有31天;4、6、9、11月有30天,闰年2月份有29天,否则28天。 闰年的条件是符合下面二者之一: (1)能被4整除,但不能被100整除。 (2)能
分析:
中国式日期为“年-月-日” 年:1到任意在于1的整数,不能“0”开头。 月:1到12。 日:1、3、5、7、8、10、12月有31天;4、6、9、11月有30天,闰年2月份有29天,否则28天。 闰年的条件是符合下面二者之一: (1)能被4整除,但不能被100整除。 (2)能被4整除,又能被400整除。//缩写为能被400整除。 #00格式(#代表任何数),只要#能被4整除,#00就一定能被400整除(闰年)。 非#00格式(也就不能被100整除了),能被4整除。 第一年的2月份都有28天,只要是闰年还要加一天。现在的任务是找出闰年。 100以内能被4整除的有: 00 04 08 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 他们的表达式为:(0?[048]|[2468][048]|[13579][26]) #00一定会被4整除,所以,只要#能被4整除,#00就一定能被400整除,他就是闰年。 #00格式闰年:(d*(0?[048]|[2468][048]|[13579][26])00) 因为不能为#00格式,所以要从上面的表中删除00这个结果。 非#00格式闰年:(d*(0?[48]|[2468][048]|[13579][26])) 把上面两个正则表达式合并 闰年:(d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26])) 整数01-28:(2[0-8]|[01]d) 整数01-30:(30|[012]d) 整数01-31:(3[01]|[012]d) 整数1-28:(2[0-8]|1d|[1-9]) 整数1-30:(30|[12]d|[1-9]) 整数1-31:(3[01]|[12]d|[1-9]) 把上面两组格式合并在一起: 整数1-28:(2[0-8]|1d|0?[1-9]) 整数1-30:(30|[12]d|0?[1-9]) 整数1-31:(3[01]|[12]d|0?[1-9]) 现在我们把它们全部组合成中国“年-月-日”格式 ^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26]))-0?2-29)$|^[1-9]d*-((0?[13578]|10|12)-(3[01]|[12]d|0?[1-9])|(0?[469]|11)-(30|[12]d|0?[1-9])|(0?2)-(2[0-8]|1d|0?[1-9]))$ 匹配: 1-1-1 244-02-29 10-10-10 2000-2-29 2008-2-29 不匹配: 2009-2-29 2009-13-10 1005-12-65 中国“年/月/日”格式 ^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26]))/0?2/29)$|^[1-9]d*/((0?[13578]|10|12)/(3[01]|[12]d|0?[1-9])|(0?[469]|11)/(30|[12]d|0?[1-9])|(0?2)/(2[0-8]|1d|0?[1-9]))$ 1/1/1 244/02/29 10/10/10 2000/2/29 2008/2/23 2009/2/29 2009/13/10 1005/12/65 中国“年.月.日”格式 ^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26])).0?2.29)$|^[1-9]d*.((0?[13578]|10|12).(3[01]|[12]d|0?[1-9])|(0?[469]|11).(30|[12]d|0?[1-9])|(0?2).(2[0-8]|1d|0?[1-9]))$ 1.1.1 244.02.29 10.10.10 2000.2.29 2008.2.23 2009.2.29 2009.13.10 中国“年/月/日”、“年-月-日”、“年.月.日”格式 (^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26]))-0?2-29)$|^[1-9]d*-((0?[13578]|10|12)-(3[01]|[12]d|0?[1-9])|(0?[469]|11)-(30|[12]d|0?[1-9])|(0?2)-(2[0-8]|1d|0?[1-9]))$)|(^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26]))/0?2/29)$|^[1-9]d*/((0?[13578]|10|12)/(3[01]|[12]d|0?[1-9])|(0?[469]|11)/(30|[12]d|0?[1-9])|(0?2)/(2[0-8]|1d|0?[1-9]))$)|(^((d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26])).0?2.29)$|^[1-9]d*.((0?[13578]|10|12).(3[01]|[12]d|0?[1-9])|(0?[469]|11).(30|[12]d|0?[1-9])|(0?2).(2[0-8]|1d|0?[1-9]))$) 2008/2/29 2000-2-28 2008.2.29 1-1/1 中国“年月日”格式(用于身份证编码等),年由4位数表示,月2位,日2位 ^(((0[048]|[2468][048]|[13579][26])00|dd(0[48]|[2468][048]|[13579][26]))0229)$|^d{4}((0[13578]|10|12)(3[01]|[12]d|0[1-9])|(0[469]|11)(30|[12]d|0[1-9])|02(2[0-8]|1d|0[1-9]))$ 19880329 20001220 20080229 1988329 20090229 20091310 10051265 欧美“月/日/年”格式 ^(0?2/29/(d*(0?[048]|[2468][048]|[13579][26])00|d*(0?[48]|[2468][048]|[13579][26])))$|^((0?[13578]|10|12)/(3[01]|[12]d|0?[1-9])|(0?[469]|11)/(30|[12]d|0?[1-9])|(0?2)/(2[0-8]|1d|0?[1-9]))/[1-9]d*$ 02/29/244 02/29/2000 2/29/2008 2/29/2009 13/10/2009 12/65/1005
转载自:http://dangjunli.iteye.com/blog/422985 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |