首先需要说明的一点无论是Winform,還是Webform都有很成熟的日历控件,无论从易用性还是可扩展性上看日期的选择和校验还是用日历控件来实现比较好。
前几天在CSDN多个版块看箌需要日期正则的帖子所以整理了这篇文章,和大家一起讨论交流如有遗漏或错误的地方,还请大家指正
日期正则一般是对格式有偠求,且数据不是直接由用户输入时使用因应用场景的不同,写出的正则也不同复杂程度也自然不同。正则的书写需要根据具体情况具体分析一个基本原则就是:只写合适的,不写复杂的
对于日期提取,只要能与非日期区分开写最简单的正则即可,如
如果可以在源字符串中唯一定位yyyymmdd正则-MM-dd格式的日期则可用做提取。
对于验证如果仅仅是验证字符组成及格式是没有多大意义的,还要加入对规则的校验由于闰年的存在,使得日期的校验正则变得比较复杂
先来考察一下日期的有效范围以及什么是闰年。
另外需求说明的是虽然日期的规则相对明确,可以采用这种方式裁剪来得到符合要求的日期正则但是并不推荐这样使用正则,正则的强大在于它的灵活性可以根据需求,量身打造最合适的正则如果只是用来套用模板,那正则也就不称其为正则了
正则的语法规则并不多,而且很容易入门掌握语法规则,量体裁衣才是正则之“道”。
非2月不带31日的月份:
第二种 :不能被100整除但能被4整除 04 08 12
一定要注意正则表达式连接起来的时候每个正则表达式都要在外层加个括号,这样就能保证连接起来的时候优先级不會改变虽然这个整个表达式一眼看省去很难看,但是还是能达到验证的目的的时间有限,就没去优化了我估计还是有优化的空间的,我做这个只是为了判断一个文件的文件名的名称是否合法,这个文件的名字中就带有日期所以。。
非2月不带31日的月份:
第二种 :不能被100整除但能被4整除 04 08 12
一定要注意正则表达式连接起来的时候每个正则表达式都要在外层加个括号,这样就能保证连接起来的时候优先级不會改变虽然这个整个表达式一眼看省去很难看,但是还是能达到验证的目的的时间有限,就没去优化了我估计还是有优化的空间的,我做这个只是为了判断一个文件的文件名的名称是否合法,这个文件的名字中就带有日期所以。。