求日期正则表达式

蒲东英的约定 2010-09-08 03:10:48
日期格式YYMMDD HH:MM,传入已字符串,判断是否为该格式
...全文
407 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
eggno8 2010-09-30
  • 打赏
  • 举报
回复
同意16楼的说法,如果连闰年计算这种都要考虑,那用正则来处理就是不合理的事情。
顺便拿走每日可用分10分~
clariones 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 awusoft 的回复:]

yyMMdd HH:mm吧.
不懂正则,使用try....SimpleDateFormart("yyMMdd HH:mm").parse();
[/Quote]
这个不是正则吧,这个是格式化输出。

日期没有正则表达式,举个理由:2000-2-29是不是正确日期? 2001-2-29是不是正确日期?2100-2-29是不是正确日期?
正则是用 “匹配”运算的,所以,为了匹配“润百年”和“非润百年”,你得列出一个长达100项的匹配串,所以日期校验,没有人用正则全部搞定的。
24K純帥 2010-09-30
  • 打赏
  • 举报
回复
学习。。
shehun 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wsdst497 的回复:]

一个特牛的日期时间判断正则表达式

这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了,不过我已经忘了在哪里找到的。

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(……
[/Quote]

这种正则表达式,基本上没有效率可言了,还是用js比较好。
qzxiaoyou 2010-09-29
  • 打赏
  • 举报
回复
wetwetwetwerweerw
虎翼 2010-09-29
  • 打赏
  • 举报
回复
一个特牛的日期时间判断正则表达式

这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了,不过我已经忘了在哪里找到的。

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$



下面的是加了时间验证的

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$
Soft_dep 2010-09-29
  • 打赏
  • 举报
回复
String regex = "\\d{6}\\s[0-2]\\d:[0-6]\\d";
youjianbo_han_87 2010-09-09
  • 打赏
  • 举报
回复
/^[1-9][0-9]{3}-(0?[1-9]|1[0|1|2])-(0?[1-9]|[1|2][0-9]|3[0|1]) (0?[1-9]|1[0-9]|2[0-3]):(0?[0-9]|[1|2|3|4|5][0-9]):(0?[0-9]|[1|2|3|4|5][0-9])$/;

这个是检查 yyyy-MM-dd HH:MM:SS 的,照着自己的要求改下吧。
kala888 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 weidongke 的回复:]
日期格式YYMMDD HH:MM,传入已字符串,判断是否为该格式
[/Quote]
干嘛要用正则判断呢。。。很复杂,还要涉及到闰年之类的。。。建议搞个js。或者用框架的验证。。
closewbq 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 weidongke 的回复:]
引用 4 楼 xuyang840117 的回复:
^(([2][01]|[1][6-9])\d{2}([0]\d|[1][0-2])([0-2]\d|[3][0-1])(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1}))?$

你这种是可以的,但是没有判断平年和闰年之分,而其4,6,9月份都有31号的
[/Quote]

完全没有必要这么多,如果验证日期的正则效率太低。长度估计超过100了!
-过客- 2010-09-08
  • 打赏
  • 举报
回复
要判断平年和闰年,必须是YYYY格式,而不能是YY格式

举例如00,如果是1900,那么它不是闰年,而2000则是闰年

参考
正则应用之——日期正则表达式
蒲东英的约定 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuyang840117 的回复:]
^(([2][01]|[1][6-9])\d{2}([0]\d|[1][0-2])([0-2]\d|[3][0-1])(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1}))?$
[/Quote]
你这种是可以的,但是没有判断平年和闰年之分,而其4,6,9月份都有31号的
xuyang840117 2010-09-08
  • 打赏
  • 举报
回复
^(([2][01]|[1][6-9])\d{2}([0]\d|[1][0-2])([0-2]\d|[3][0-1])(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1}))?$
解未知数 2010-09-08
  • 打赏
  • 举报
回复

private static boolean isDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd HH:mm");
try {
sdf.parse(dateStr);
} catch (ParseException e) {
//e.printStackTrace();
return false;
}
return true;
}
System.out.println(isDate("100809 12"));
awusoft 2010-09-08
  • 打赏
  • 举报
回复
yyMMdd HH:mm吧.
不懂正则,使用try....SimpleDateFormart("yyMMdd HH:mm").parse();
Qin_Tianxiang 2010-09-08
  • 打赏
  • 举报
回复
同楼主一样,自己不会写正则,且又懒得去搜一下...

62,614

社区成员

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

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