求一个诸如满足2010-5-16格式的正则表达式,在线等!!!

wfy_928 2010-05-17 02:09:41
要满足yyyy-MM-dd格式的正则表达式,
其中主要是dd必须在1到31之间,
我是用在Java类中,请不要写在javaScript,谢谢!!
...全文
211 20 打赏 收藏 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这种表达式长是由于存在个恶心闰年的关系,不仅得被 4 整除,而且在整百时还得能被 400 整除,表达式中宝贵的空间让这个占用了大部分(毕竟正则表达式不是用来干这事的)!
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wfy_928 的回复:]
需要一个简单的,我主要运用到循环中,复杂了运行时很慢的,
主要是判断一个2010-5-这种号数必须要有值哈,年份要是4位的,月份1位和2为都可以哈,
麻烦了哦!!!!!!!!!!!!!
[/Quote]

没有简单的了,8 楼给出的表达式已经用到了正则表达式一些高级的特性,字符数量在 300 个以下了。你可以到网上去搜搜看,基本上都是在 300 个字符以上的。

像这种应用不应该使用正则表达式来处理,那些超吓人的日期正则表达式,一般只是用在实验阶段,几乎没人会在正式环境中用这些的。

建议用正则表达式先简单地验证一下数字格式,后面采用字符串分隔进行逻辑校验,这才是既方便,又简便,而且效率也不低的方法。
wfy_928 2010-05-18
  • 打赏
  • 举报
回复
需要一个简单的,我主要运用到循环中,复杂了运行时很慢的,
主要是判断一个2010-5-这种号数必须要有值哈,年份要是4位的,月份1位和2为都可以哈,
麻烦了哦!!!!!!!!!!!!!
suixin99 2010-05-18
  • 打赏
  • 举报
回复
输入时间日期的时候用一个控件多好啊,又好看又实用,而且用不着校验
keeya0416 2010-05-18
  • 打赏
  • 举报
回复
膜拜啊
whlcy 2010-05-18
  • 打赏
  • 举报
回复
mark!!!!!
javaee_ssh 2010-05-18
  • 打赏
  • 举报
回复
顶下。。。。。。。。
OoSmallCat 2010-05-18
  • 打赏
  • 举报
回复
佩服啊~~~
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soli11722984 的回复:]
偶然发现一个地址
http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html
[/Quote]

这篇文章咋到这里去了?我记得是在这里发的啊。
http://topic.csdn.net/u/20080306/17/f37a1818-3968-49b4-8f79-e5564486d63e.html
Mars_Ma_OK 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soli11722984 的回复:]
偶然发现一个地址
http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html

火龙果果然不是一般的猛
[/Quote]

真猛...太牛了..
soli11722984 2010-05-17
  • 打赏
  • 举报
回复
偶然发现一个地址
http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html

火龙果果然不是一般的猛

shine333 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bao110908 的回复:]

(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8]|(?:(?<=(?:0[13578]|1[02])-)(?:29|3[01]))|(?:(?<=(?:0[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[0……
[/Quote]

连1900-02-29都过滤了,五体投地啊
  • 打赏
  • 举报
回复
上面那个有点小 bug,月和日必须是两位数的,修改后如下:

(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-9]|2[0-8]|(?:(?<=-(?:0?[13578]|1[02])-)(?:29|3[01]))|(?:(?<=-(?:0?[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[048]|[13579][26]))|(?:(?:[02468]?[048]|[13579][26])00))-0?2-)(?:29)))

参考:http://blog.csdn.net/bao110908/archive/2008/02/29/2132973.aspx
Mars_Ma_OK 2010-05-17
  • 打赏
  • 举报
回复
2月有没有判断没有30天的呢?
soli11722984 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bao110908 的回复:]
(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8]|(?:(?<=(?:0[13578]|1[02])-)(?:29|3[01]))|(?:(?<=(?:0[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[04……
[/Quote]

这个。。。。。太猛了,不过是不是要考虑年没有0开头的呢
  • 打赏
  • 举报
回复
(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8]|(?:(?<=(?:0[13578]|1[02])-)(?:29|3[01]))|(?:(?<=(?:0[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[048]|[13579][26]))|(?:(?:[02468]?[048]|[13579][26])00))-02-)(?:29)))
closewbq 2010-05-17
  • 打赏
  • 举报
回复

String ss="\\d{4}-\\d{2}-(0[1-9]|([12][0-9])|(3[01]))";
System.out.println("0000-00-12".matches(ss));
Mars_Ma_OK 2010-05-17
  • 打赏
  • 举报
回复
帮顶吧..
绿光 2010-05-17
  • 打赏
  • 举报
回复
([12][0-9]{3})\-(0[1-9]|1[0-2])\-([0-2][0-9]|3[012])
大概是这样的,我没验证,你试试
24K純帥 2010-05-17
  • 打赏
  • 举报
回复
偶菜鸟不怎么会写正则的\d{4}-(0?[1-9]|[1][012])-(0?[1-9]|[12][0-9]|3[01])

62,620

社区成员

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

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