"一个特牛的日期时间判断正则表达式"--我的修改版
2008-04-10 12:59
519 查看
在网上搜索有关日期YYYY-MM-DD的正则表达式出现不少标题为<<一个特牛的日期时间判断正则表达式>>的连接,本人也采用了,但是在
08年2月29日时,正好测试页面,不经意间就选择了当天的日期,结果RegularExpressionValidator显示了错误提示,于是我自己觉得很纳闷,
WHY,难道"特牛"的有问题?于是再次测试果然...
![](http://www.cnblogs.com/Emoticons/baimantou/202015412.gif)
...无语中...算了,还是自己修改一下吧,反正应该不是很难,于是看了看正则表达式的
资料,分析"特牛"的内容,自己做了一些修改和添加,现在这个应该就不错了,应该叫"特牛++"
![](http://www.cnblogs.com/Emoticons/baimantou/223332482.gif)
表达式测试范围为1600到9999年
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))| /*平年闰年1 35 7 8 10 12月*/
(((1[6-9]|[2-9]\d)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))| /*平年闰年4 6 9 11月*/
(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))| /*平年2月*/
(((1[6-9]|[2-9]\d)[13579][26])-0?2-29)| /*经过分析只要一个整数的最后两位数能被4整除那么这个数就可以被4整除,于是有了下面五行*/
(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|
(((1[6-9]|[2-9]\d)0[48])-0?2-29)|
(([13579]6)00-0?2-29)|
(([2468][048])00-0?2-29)|
(([3579]2)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?[469]|11)-(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)[13579][26])-0?2-29)|(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|(((1[6-9]|[2-9]\d)0[48])-0?2-29)|(([13579]6)00-0?2-29)|(([2468][048])00-0?2-29)|(([3579]2)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[469]|11)-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-02-(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)[13579][26])-02-29)|(((1[6-9]|[2-9]\d)[2468][048])-02-29)|(((1[6-9]|[2-9]\d)0[48])-02-29)|(([13579]6)00-02-29)|(([2468][048])00-02-29)|(([3579]2)00-02-29))$
HappyCoding
2009年6月2日11:24:50
发现上面的有问题修改如下:
-- 月份和日子前面可以有零
((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?[469])|11)-((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)([13579][26])-0?2-29) /*经过分析只要一个整数的最后两位数能被4整除那么这个数就可以被4整除,于是有了下面五行*/
((1[6-9]|[2-9]\d)([2468][048])-0?2-29)
((1[6-9]|[2-9]\d)(0[48])-0?2-29)
([13579]600-0?2-29)
([2468][048]00-0?2-29)
([3579]200-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?[469])|11)-((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)([13579][26])-0?2-29)|((1[6-9]|[2-9]\d)([2468][048])-0?2-29)|((1[6-9]|[2-9]\d)(0[48])-0?2-29)|([13579]600-0?2-29)|([2468][048]00-0?2-29)|([3579]200-0?2-29))$
08年2月29日时,正好测试页面,不经意间就选择了当天的日期,结果RegularExpressionValidator显示了错误提示,于是我自己觉得很纳闷,
WHY,难道"特牛"的有问题?于是再次测试果然...
![](http://www.cnblogs.com/Emoticons/baimantou/202015412.gif)
...无语中...算了,还是自己修改一下吧,反正应该不是很难,于是看了看正则表达式的
资料,分析"特牛"的内容,自己做了一些修改和添加,现在这个应该就不错了,应该叫"特牛++"
![](http://www.cnblogs.com/Emoticons/baimantou/223332482.gif)
表达式测试范围为1600到9999年
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))| /*平年闰年1 35 7 8 10 12月*/
(((1[6-9]|[2-9]\d)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))| /*平年闰年4 6 9 11月*/
(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))| /*平年2月*/
(((1[6-9]|[2-9]\d)[13579][26])-0?2-29)| /*经过分析只要一个整数的最后两位数能被4整除那么这个数就可以被4整除,于是有了下面五行*/
(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|
(((1[6-9]|[2-9]\d)0[48])-0?2-29)|
(([13579]6)00-0?2-29)|
(([2468][048])00-0?2-29)|
(([3579]2)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?[469]|11)-(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)[13579][26])-0?2-29)|(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|(((1[6-9]|[2-9]\d)0[48])-0?2-29)|(([13579]6)00-0?2-29)|(([2468][048])00-0?2-29)|(([3579]2)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[469]|11)-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-02-(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)[13579][26])-02-29)|(((1[6-9]|[2-9]\d)[2468][048])-02-29)|(((1[6-9]|[2-9]\d)0[48])-02-29)|(([13579]6)00-02-29)|(([2468][048])00-02-29)|(([3579]2)00-02-29))$
HappyCoding
2009年6月2日11:24:50
发现上面的有问题修改如下:
-- 月份和日子前面可以有零
((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?[469])|11)-((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)([13579][26])-0?2-29) /*经过分析只要一个整数的最后两位数能被4整除那么这个数就可以被4整除,于是有了下面五行*/
((1[6-9]|[2-9]\d)([2468][048])-0?2-29)
((1[6-9]|[2-9]\d)(0[48])-0?2-29)
([13579]600-0?2-29)
([2468][048]00-0?2-29)
([3579]200-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?[469])|11)-((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)([13579][26])-0?2-29)|((1[6-9]|[2-9]\d)([2468][048])-0?2-29)|((1[6-9]|[2-9]\d)(0[48])-0?2-29)|([13579]600-0?2-29)|([2468][048]00-0?2-29)|([3579]200-0?2-29))$
相关文章推荐
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个牛X的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 一个特牛的日期时间判断正则表达式
- 日期时间判断正则表达式
- 日期时间判断正则表达式
- NSDate的一个分类,判断是否是今天,昨天,今年,获得与当前时间的差距,返回一个只有年月日的日期
- 一个日期时间判断的正则表达式
- 判断日期时间在一个区间范围内,时间为时间戳
- Java判断一个日期时间是否是昨天
- 发现了一个可以选择日期和时间的控件,我做了部分的修改,以适合我的项目,有兴趣的可以下载
- 在oracle中怎么判断一个日期是否在一定时间范围内
- 日期时间判断正则表达式
- 自己做的一个日期时间选择控件,欢迎试用并给出修改意见