- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
正则表达式日期正则应用的 日期正则表达式
正则表达式日期:正则应用的 日期正则表达
式
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/DeveloperUtil/Article69992.html
1概述
首先需要介绍说明点无论是Winform还是Webform都有很成熟日历Control控件无论从易用性还是可扩展性上
看日期选择和校验还是用日历Control控件来实现比较好
前几天在CSDN多个版块看到需要日期正则帖子所以整理了这篇文章和大家起讨论交流如有遗漏或地方还请大
家指正
日期正则般是对格式有要求且数据不是直接由用户输入时使用因应用场景区别写出正则也区别复杂程度也自然
区别正则书写需要根据具体情况具体分析个基本原则就是:只写合适不写复杂
对于日期提取只要能和非日期区分开写最简单正则即可如
复制代码 代码如下
\d{4}-\d{2}-\d{2}
如果可以在源串中唯定位yyyy-MM-dd格式日期则可用做提取
对于验证如果仅仅是验证组成及格式是没有多大意义还要加入对规则校验由于闰年存在使得日期校验正则变得
比较复杂
先来考察下日期有效范围以及什么是闰年
2 日期规则
2.1 日期有效范围
对于日期有效范围区别应用场景会有所区别
MSDN中定义DateTime对象有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59
UNIX时间戳0按照ISO 8601规范标准为 :1970-01-01T00:00:00Z
而实际应用中日期范围基本上不会超出DateTime所规定范围所以正则验证取其中常用日期范围即可
2.2 什么是闰年
(以下摘自百度百科)
闰年(leap year)是为了弥补因人为历法规定造成年度天数和地球实际公转周期时间差而设立补上时间差年份为
闰年
地球绕日运行周期为365天5小时48分46秒(合365.24219天)即回归年(tropical year)公历平年只有365日比回归
年短约0.2422 日每 4年累积约天把这天加于2月末(即2月29日)使当年时间长度变为366日这年就为闰年
需要注意是,现在公历是根据罗马人“儒略历”改编而得由于当时没有了解到每年要多算出0.0078天问题从公元
前46年到16世纪共累计多出了10天为此当时教皇格雷果里十 3世将1582年10月5日人为规定为10月15日并开
始了新闰年规定即规定公历年份是整百数必须是400倍数才是闰年不是400倍数就是平年比如1700年、1800年
和1900年为平年2000年为闰年此后平均每年长度为365.2425天约4年出现1天偏差按照每 4年个闰年计算平均
每年就要多算出0.0078天经过 4百年就会多出大约3天来因此每 4百年中要减少 3个闰年闰年计算归结起来就是
通常说: 4年闰;百年不闰 4百年再闰
2.3 日期格式
根据区别语言文化日期连会有所区别通常有以下几种格式:
yyyyMMdd
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
3 日期正则表达式构建 3.1 规则分析
写复杂正则个常用思路方法就是先把不相关需求拆分开分别写出对应正则然后组合检查下相互关联关系以及影
响基本上就可以得出对应正则
按闰年定义可知日期可以有几种分类思路方法
3.1.1 根据天数是否和年份有关划分为两类
和年份无关类中根据每月天数区别又可细分为两类
Ø 1、3、5、7、8、10、12月为1-31日
Ø 4、6、9、11月为1-30日
和年份有关类中
Ø 平年2月为1-28日
Ø 闰年2月为1-29日
3.1.2 根据包含日期区别可划分为 4类
Ø 所有年份所有月份都包含1-28日
Ø 所有年份除2月外都包含29和30日
Ø 所有年份1、3、5、7、8、10、12月都包含31日
Ø 闰年2月包含29日
3.1.3 分类思路方法选择
日期分类的后实现是要通过(exp1|exp2|exp3)这种分支结构来实现而分支结构是从左侧分支依次向右开始尝试
匹配当有个分支匹配成功时就不再向右尝试否则尝试所有分支后并报告失败
分支多少每个分支复杂程度都会影响匹配效率考虑到被验证日期概率分布绝大多数都是落到1-28日内所以采用
第 2种分类思路方法会有效提高匹配效率
3.2 正则实现
采用3.1.2节分类思路方法就可以针对每个规则写出对应正则以下暂按MM-d
您可能关注的文档
最近下载
- 2025医保政策培训(1).pptx VIP
- 2025年北京市自来水集团有限责任公司校园招聘笔试备考试题及答案解析.docx VIP
- Fujifilm富士相机X-T5用户手册.pdf
- 口袋妖怪梦的光点全图鉴.docx
- 东南大学出版社孙志忠版《数值分析解析》习题答案.pdf VIP
- 痰诱导检查课件.pptx VIP
- 中南林业科技大学涉外学院《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- 人工髋关节置换术术后护理.pptx VIP
- 中南林业科技大学《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- 【浅析幼儿园安全教育现状及改进对策研究—以A幼儿园为例6000字】.docx VIP
原创力文档


文档评论(0)