记一种验证日期格式的正则表达式
工作中经常需要对用户输入的日期进行验证,常用的方式是使用正则对格式进行验证。比如如下:
一、简单的日期判断(YYYY/MM/DD):
^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$
二、演化的日期判断(YYYY/MM/DD| YY/MM/DD):
^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$
三、加入闰年的判断的:
^((((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?[13456789]|1[012])-(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)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
...
诸如此类。
实际上仅仅对字符串做验证,并不严密,而且费力。
下面介绍一种结合正则和日期函数的验证方式:
/*** 验证日期格式* @param date* @return {boolean}*/function checkDate(date) {var result = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);if (result == null)return false;var d = new Date(result[1], result[3] - 1, result[4]);return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4]);}
利用正则验证后的结果尝试构造日期,然后一一对比。如果构造失败或对比结果有不同的,则验证不通过。
转载于:https://www.cnblogs.com/guyezhai/p/6729663.html
记一种验证日期格式的正则表达式相关推荐
- 日期格式的正则表达式
日期的格式多种多样,有如:"yyyy-MM-dd HH:mm:ss"."yyyy/MM/dd HH:mm:ss"."yyyyMMdd HH:mm:ss ...
- php验证年月日的正则表达式,关于正则表达式:在php中验证日期格式
我正在尝试使用PHP验证日期. 我希望以下格式有效: d/m/yy d/m/yyyy dd/m/yy dd/m/yyyy d/mm/yy d/mm/yyyy dd/mm/yy dd/mm/yyyy 我 ...
- oracle 正则表达式匹配日期格式,利用正则表达式找出不合符的日期
很多时候我们的日期可能存放的是字符串类型,在插入的时候也很有可能插入的日期格式不正确, 因此我们需要找出这些不合符的日期格式,来此来修正.当然可以使用TO_DATE函数一个一个的转换来找出不合法的日期 ...
- C# 一种英文日期格式转换
Wed May 26 14:59:00 CST 2021 针对这种,我对Wed May 26,采用的方法是dt.DayOfWeek.ToString().Substring(0,3)+dt.ToStr ...
- 验证英文日期格式的正则表达式
matchDate(){ // let dateString = 'Jan 01, 2019' let dateString = 'January 01, 2019' var dateRegex = ...
- joi模块验证日期格式_python datetime模块详解
一.datetime模块介绍 通过print(dir(datetime)),我们可以看到模块内属性和类: ['MAXYEAR', 'MINYEAR', '__builtins__', '__cache ...
- 验证日期时间的正则表达式
可以不要秒数的: ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|( ...
- 验证手机号码格式的正则表达式编写思路详解
Cooking Regex微信公众号 正则表达式学习 一.获取目前中国三大运营商的手机号码段 手机号码段 如上图我们可以根据不同运营商的号码段来编写正则,也可以进行统一校验的编写,我这边主要是编写统一 ...
- python按照号段生成手机号接收验证码,验证手机号码格式的正则表达式编写思路详解...
一.获取目前中国三大运营商的手机号码段 如上图我们可以根据不同运营商的号码段来编写正则,也可以进行统一校验的编写,我这边主要是编写统一校验的. 二.思路 1.为了得到号码段的规律,我们可以把它们先进行 ...
最新文章
- python从字典里搜索_Python:在字典中搜索字典的函数
- [转]sudoers设置
- leetcode 474. 一和零(dp)
- LeetCode 322. 零钱兑换(DP)
- spark的朴素贝叶斯分类原理
- mysqldump实现数据备份及灾难恢复
- iPad 读不到 USB,在 Mac 上如何进行 USB 格式化?
- 计算机专业 本科论文,计算机专业本科毕业设计和毕业论文的感悟
- 解析函数论 Page 22 达朗贝尔判别法 VS 柯西判别法
- Transformer计算量和过程统计
- tensorflow-tf基础
- Daily Scrum Meeting 11.04
- 求一元二次方程的根(YZOJ-1048)
- Redis源码阅读,从入门到放弃
- ResNet网络的改进版:ResNeXt
- android 打包多个apk注意事项:
- 亚马逊将推出VR购物应用,支持Vive Rift PSVR三大平台
- c语言编程复制快捷键,C语言再学习 -- 常用快捷键
- 企业画像在企业活动中的价值
- cve-2019-07-08
热门文章
- 为什么要重写 hashcode 和 equals 方法?
- KA,连接池居然这么简单?
- 分布式的事务该怎么做?
- 奇安信为什么大量招人_券商招人鄙视链:985学历vs美本学历,究竟谁垫底?
- java不可编辑的文本框_如何使编辑文本不可编辑,但在JAVA中可点击
- 成功解决AttributeError: module ‘dask.array.numpy_compat‘ has no attribute ‘take_along_axis‘
- Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
- Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略
- 成功解决ModuleNotFoundError: No module named 'keras_retinanet.utils.compute_overlap'
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)