最近做的事情,日期时间用的是字符串在传,需要对之进行校验。
网上看了看,没找到非常满意的,于是自己动手,写了一个。
其中不完美的是:没有根据闰年判断2月分有没有29这一天。
其中要说明的:
1、年份限制在2000~2999这1000年中。
2、基本格式如下:
年:yyyy
月:yyyy-[M]M
日:yyyy-[M]M-[d]d
时:yyyy-[M]M-[d]d HH:00:00
时间:yyyy-[M]M-[d]d HH:mm:ss
private static final String yearPattern = "^2[0-9]{3}$"; private static final String monthPattern = "^2[0-9]{3}-(0?[1-9]|1[0-2])$"; private static final String janPattern = "(0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01])"; private static final String febPattern = "0?2-(0?[1-9]|[12][0-9])"; private static final String aprPattern = "(0?[469]|11)-(0?[1-9]|[12][0-9]|30)"; private static final String dayPattern = String.format("^2[0-9]{3}-(%s|%s|%s)$", janPattern, febPattern, aprPattern); private static final String hourFormat = String.format("^2[0-9]{3}-(%s|%s|%s) ([01][0-9]|2[0-3]):00:00$", febPattern, janPattern, aprPattern); private static final String timeFormat = String.format("^2[0-9]{3}-(%s|%s|%s) ([01][0-9]|2[0-3])(:[0-5][0-9]){2}$", febPattern, janPattern, aprPattern); public static void main(String[] args) { System.out.println("2000".matches(yearPattern)); System.out.println("2999".matches(yearPattern)); System.out.println("1999".matches(yearPattern)); System.out.println("20001".matches(yearPattern)); System.out.println("200".matches(yearPattern)); System.out.println("2000-11".matches(monthPattern)); System.out.println("2000-01".matches(monthPattern)); System.out.println("2000-1".matches(monthPattern)); System.out.println("2000-13".matches(monthPattern)); System.out.println("2000-00".matches(monthPattern)); System.out.println("2000-11-1".matches(dayPattern)); System.out.println("2000-11-01".matches(dayPattern)); System.out.println("2000-11-31".matches(dayPattern)); System.out.println("2000-11-00".matches(dayPattern)); System.out.println("2000-11-29".matches(dayPattern)); System.out.println("2000-2-29".matches(dayPattern)); System.out.println("2000-2-30".matches(dayPattern)); System.out.println("2000-11-1 18:60:00".matches(hourFormat)); System.out.println("2000-11-1 18:00:10".matches(hourFormat)); System.out.println("2000-1-1 18:00:00".matches(hourFormat)); System.out.println("2000-11-1 28:00:00".matches(hourFormat)); System.out.println("2000-11-1 08:00:00".matches(hourFormat)); System.out.println("2000-11-1_18:00:00".matches(hourFormat)); System.out.println("2000-11-1 08:00:00".matches(timeFormat)); System.out.println("2000-11-1 08:10:00".matches(timeFormat)); System.out.println("2000-11-1 08:00:50".matches(timeFormat)); System.out.println("2000-11-1 08:00:70".matches(timeFormat)); }
相关推荐
* @param 日期验证,验证的格式有: * "yyyyMM","yyyyMMdd","yyyyMMdd HH:mm:ss", * "yyyy-MM","yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" * "yyyy.MM","yyyy.MM.dd","yyyy.MM.dd HH:mm:ss" * "yyyy/MM","yyyy/MM/dd...
java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数 3.58是否为金额:true 3.582是否为金额:false 1284789@qq.com是否为email:true 1284789qq.com是否为email:false 1823753112是否为手机号:...
json数据交互时作为校验是否通过,用于后台需要构建json返回前台必备
主要介绍了详解Java判断是否是整数,小数或实数的正则表达式,非常具有实用价值,需要的朋友可以参考下。
随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕...
主要介绍了Java基于正则实现的日期校验功能,涉及java文件读取、日期转换及字符串正则匹配相关操作技巧,需要的朋友可以参考下
主要介绍了Java正则判断日期格式是否正确的方法,结合实例形式分析了Java针对日期字符串正则判断的相关操作技巧,需要的朋友可以参考下
正则表达式判断不包涵特殊字符(除了 指定字符 以外)
判断字符串是否包含emoji表情
MAC地址合法性检测(C,C++, JAVA实现)
主要介绍了Java正则表达式验证固定电话号码符合性的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
js引擎会将/正则表达式/“”转换成一个RegExp对象,当字符串满足正则表达式的要求事,返回true。 我写的一个表达式验证示例:功能如下: 用户名,不能为空 密码6为数字 密码确认,两次输入密码必须相同 身份证号码...
在操作String类对象时,会经常遇到对字符串进行验证的功能,而按照我们之前学习的String类,我们使用String类中的诸多函数是可以完成对字符串校验功能的,但是代码相对来说比较麻烦,所以在Java中引入正则表达式的...
如果可以在源字符串中唯一定位yyyy-MM-dd格式的日期,则可用做提取。 对于验证,如果仅仅是验证字符组成及格式是没有多大意义的,还要加入对规则的校验。由于闰年的存在,使得日期的校验正则变得比较复杂。 先来考察...
今天小编就为大家分享一篇关于Java使用正则表达式验证手机号和电话号码的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
主要介绍了Android编程实现的身份证、车牌号正则验证工具类,结合实例形式分析了java针对身份证、车牌号数字字符串正则验证操作技巧,需要的朋友可以参考下
本文实例讲述了正则验证不能含有中文的实现方法。分享给大家供大家参考...Java验证字符串没有中文 if (nickname.getBytes().length != nickname.length()) { errors.add("用户名不能含有中文"); } PS:这里再为大家
这是一个Java程序,旨在帮助程序员根据用户输入的Java正则表达式测试文本字符串。
这时,就需要对用户传递过来的字符串参数进行校验。 本案例我们介绍使用Java代码的正则表达式来验证手机号码其是否合法。 具体编写步骤: 1、封装一个工具类 2、验证手机号码的代码方法编写 3、如果验证通过,对该...