求一正则表达式匹配YYYY.MM.DD日期格式

temp220 2010-10-14 01:23:32
String [] str = {"2010.1.12","09.12.12","09.1.12"};
...全文
547 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2010-10-15
  • 打赏
  • 举报
回复
这里用正则不合适,用SimpleDateFormat,依次用“yyyy.M.d”、“yy.MM.d”和“yy.M.d”来parse字符串,只要一个成功即为合法字符串。
parse得到Date类型值后,统一为"yyyy.MM.dd"输出是很容易的事情。
-过客- 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 temp220 的回复:]
Java 中 我要匹配的是String [] str = {"2010.1.12","09.12.12","09.1.12"};这三种可能性
[/Quote]

你给的这三种情况,没有一种是和你的标题能对应起来的

年份需要四位才能判断是否为闰年,同样是00.02.29,年份为1900和2000结果是不一样的
magichuyi 2010-10-14
  • 打赏
  • 举报
回复
var CheckDate=str.match(/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/);//判断字符串是否为日期YYYY-MM-DD || YYYY/MM/DD
voice1122 2010-10-14
  • 打赏
  • 举报
回复
((20)?(10|09))(\\.(1[0-2])|([1-9]))(\\.(3[0-1])|(2\\d)|1\\d|[1-9])
刚学正则表达式,试着写了一个。这里没考虑闰月的问题,年的表示也仅仅满足LZ的那个内容,可根据需要完善。
  • 打赏
  • 举报
回复
temp220 2010-10-14
  • 打赏
  • 举报
回复
Java 中 我要匹配的是String [] str = {"2010.1.12","09.12.12","09.1.12"};这三种可能性
-过客- 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 temp220 的回复:]
String [] str = {"2010.1.12","09.12.12","09.1.12"};
[/Quote]

按楼主标题要求正则应该是

^(?:(?!0000)[0-9]{4}\.(?:(?:0[1-9]|1[0-2])\.(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])\.(?:29|30)|(?:0[13578]|1[02])\.31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)\.02\.29)$

当然,如果是用在Java程序中,把\替换为\\

不知道楼主给的三个例子想说明什么,这几个都是不能通过验证的
gzk_guodong 2010-10-14
  • 打赏
  • 举报
回复
使用反向引用进行简化,年份0001-9999,格式yyyy-MM-dd或yyyy-M-d,连字符可以没有或是“-”、“/”、“.”之一。

^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$


81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧