惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
博客园_首页
J
Java Code Geeks
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
量子位
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
B
Blog
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI

博客园 - josephshi

识别文本文件编码 文件分割 合并 小软件 呵呵 APACHE+ASP.NET 出现问题 compiere/adempiere+pgsql8.2+RHEL4+jdk1.5 学习 memcached 地震... Visual Studio 2008 简体中文正式版下载及序列号(无使用期限限制,正式版) How to Write a Provider Model Retrieving middle rows from a table Snap it! - How to take a screen shot using .NET - josephshi 我用hsqldb 找出闰年 Copy a table from one database to another in SQL Server 2005 个人用Mozilla FIREFOX的感受 RSS阅读量大于页面访问量 美工太差,效果不好看 有点怪怪的 ASP.NET Validation Controls – Important Points, Tips and Tricks Highlight a Row in GridView without a postback using ASP.NET and JavaScript
"一个特牛的日期时间判断正则表达式"--我的修改版 - josephsh...
josephshi · 2008-04-10 · via 博客园 - josephshi

在网上搜索有关日期YYYY-MM-DD的正则表达式出现不少标题为<<一个特牛的日期时间判断正则表达式>>的连接,本人也采用了,但是在
08年2月29日时,正好测试页面,不经意间就选择了当天的日期,结果RegularExpressionValidator显示了错误提示,于是我自己觉得很纳闷,
WHY,难道"特牛"的有问题?于是再次测试果然......无语中...算了,还是自己修改一下吧,反正应该不是很难,于是看了看正则表达式的
资料,分析"特牛"的内容,自己做了一些修改和添加,现在这个应该就不错了,应该叫"特牛++"

表达式测试范围为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))$