社区
Java SE
帖子详情
关于日期的
syj247
2010-04-12 09:03:33
求一个关于日期的正则。。
要能够判断2月的天数。。。
怎么搞 请高手指点
...全文
95
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位日的形式
手机
日期
插件mobiscroll奇巧淫技和中文API
这表明我们可以从这篇文章中获取更多关于如何实际操作和利用mobiscroll的实用信息。 **标签解析:“mobiscroll”:** 这个标签直接对应了我们讨论的主题,是一个轻量级、高度可定制的
日期
和时间选择器插件,常用于...
整理shell脚本中关于
日期
操作脚本
整理shell脚本中关于
日期
操作脚本 一、计算指定
日期
的前一天的
日期
date -d "yesterday 20150401 " +%Y%m%d 二、如果获取当前
日期
的前一天 date -d "yesterday" +%Y%m%d 三、计算指定
日期
的前几天(例如计算...
JavaScript 关于
日期
的 相关 工具类
JavaScript 关于
日期
的 相关 工具类
数字
日期
格式转换yyyymmdd_Excel
日期
格式常用转换方法大全,关于
日期
函数
原标题:Excel
日期
格式常用转换方法大全,关于
日期
函数 我们经常会汇总一些同事表格,最终全部完善到一个表格中,不过这些表格中的
日期
格式各有差异。此时,我们就应该将其
日期
全部统一一下格式,对于
日期
格式的转换...
MySQL关于
日期
及时间字段的查询
关于
日期
及时间的查询等各类需求也很多,本篇文章简单讲讲
日期
及时间字段的规范化查询方法。 1.
日期
和时间类型概览 MySQL支持的
日期
和时间类型有DATETIME、TIMESTAMP、DATE、TIME、YEAR,几种类型比较如下: ...
Java SE
62,624
社区成员
307,283
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章