社区
Java SE
帖子详情
关于日期的
syj247
2010-04-12 09:03:33
求一个关于日期的正则。。
要能够判断2月的天数。。。
怎么搞 请高手指点
...全文
85
10
打赏
收藏
关于日期的
求一个关于日期的正则。。 要能够判断2月的天数。。。 怎么搞 请高手指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zoeg
2010-04-13
打赏
举报
回复
首先,非常佩服2楼的耐心,我反正是看到吐血;
可惜,找到一个例外:1600-02-29是正确的日期格式,却无法匹配!!!
myeclipse0123
2010-04-13
打赏
举报
回复
不是java不适用,是操作系统只能到那一年应该是1700年
zoeg
2010-04-13
打赏
举报
回复
^((?!0000)[0-9]{4}(-(0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8])|-(0?[13-9]|1[0-2])-(29|30)|-(0?[13578]|1[02])-31)|(?!0000)([0-9]{2}(04|08|[2468][048]|[13579][26])|(0[0-9]|1[0-5]|[2468][048]|[13579][26])00)-0?2-29)$
这个对于一般的日期校验已经相当精确了;
不过经过一番研究,居然发现了新大陆:
1、1582-10-05到1582-10-14之间的日期不合法,因为根本没有这10天;
2、闰年还要考虑3200年的周期;
3、闰年同时还要考虑172800年的周期(不过要是因为没有做这个校验产生问题,那我也认了)。
真麻烦,继续努力中,回头给你们贴更精确完善的!!!
zoeg
2010-04-13
打赏
举报
回复
刚才的弄错了,果然是不做不知道,一做吓一跳:
闰年规则中,似乎百年不闰对公元1501年以前不适用,不知道是java API出错了,还是就是这样的!!!
重写了下,修正点小BUG,另外再来个兼容的,可以在js上跑:
^((?!0000)[0-9]{4}(-(0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8])|-(0?[13-9]|1[0-2])-(29|30)|-(0?[13578]|1[02])-31)|(?!0000)([0-9]{2}(04|08|[2468][048]|[13579][26])|(0[0-9]|1[0-5]|[2468][048]|[13579][26])00)-0?2-29)$
zoeg
2010-04-13
打赏
举报
回复
我来一个强大的,用几万个边沿数据测试过了:
^(?!0000)[0-9]{4}-((0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8]|(?<=-0?[13578]-|-1[02]-)31|(?<!-0?2-)(29|30))|(?<=(?<=[02468][048]|[13579][26]|(?<![02468][048]|[13579][26])00)-)0?2-29)$
注意:(?<=)向左预查需要高版本的正则表达式,非常遗憾地,如果你想用在js上,版本就不够!!!
syj247
2010-04-12
打赏
举报
回复
我的也老没学好。。。 刚那个真的有点长·。 我在Eclipse下分了六行。。。
godismydaughter
2010-04-12
打赏
举报
回复
[Quote=引用 1 楼 sbfivwsll 的回复:]
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[1-9]\d{2}|[1-9]\d{3})-(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30))|(02-(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][2……
[/Quote]为何我的正则老是学不好。
syj247
2010-04-12
打赏
举报
回复
[Quote=引用 1 楼 sbfivwsll 的回复:]
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[1-9]\d{2}|[1-9]\d{3})-(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30))|(02-(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26……
[/Quote]
谢谢
铑枪--突廆孒
2010-04-12
打赏
举报
回复
当然能对2月份的29日进行验证了
铑枪--突廆孒
2010-04-12
打赏
举报
回复
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[1-9]\d{2}|[1-9]\d{3})-(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30))|(02-(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$
这个正则表达式有点长,是验证的日期格式是 四位年-2位月-2位日的形式
好用的
日期
控件 看看来
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
日期
控件
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
查看
日期
PHP7
日期
时间模块
King老师精心打造的PHP7
日期
时间模块课程,由浅入深的讲解了PHP中
日期
时间函数模块,并介绍了一些常用的
日期
时间插件,让我们一起开启
日期
时间之旅吧~山哥出品,必属精品!
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
日期
控件
日期
选择
SQL查询中
日期
的相关要点
三个关于
日期
操作的公式:
日期
+数字=
日期
(若干天之后的
日期
);
日期
-数字=
日期
(若干天之前的
日期
);
日期
-
日期
=数字(天数)。 四个
日期
处理函数: 1.
日期
ADD_MONTH(列|
日期
,月数):在指定
日期
上增加若干个月之后的
日期
。 2.数字 MONTHS_BETWEEN(列|
日期
,列|
日期
):返回两个
日期
之间的月数。 3.
日期
Last_Day(列|
日期
):取得指定
日期
所在月...
Java SE
62,584
社区成员
307,504
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章