Java基于正则实现的日期校验功能示例
作者:kinkding 发布时间:2021-09-30 02:43:26
标签:Java,正则,日期
本文实例讲述了Java基于正则实现的日期校验功能。分享给大家供大家参考,具体如下:
private void checkDate() throws IOException {
// 4种分隔符
String sep = "[-\\./_]";
// 年份
String strPattern = "^(19[4-9]\\d|20\\d{2})" + sep;
strPattern += "(";
// 月(1,3,5,7,8,10,12)
strPattern += "((0?[13578]|1[02])" + sep + "(0?[1-9]|[12][0-9]|3[01]))|";
// 月(4,6,9,11)
strPattern += "((0?[469]|11)" + sep + "(0?[1-9]|[12][0-9]|30))|";
// 月(2)
strPattern += "((2)" + sep + "(0?[1-9]|[12]\\d))";
strPattern += ")$";
Pattern p = Pattern.compile(strPattern);
Matcher m = p.matcher("");
int count = 0;
String fileName = ExcelGene.class.getResource("date.txt").getFile();
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = br.readLine()) != null) {
count++;
if (line.trim().length() > 0) {
m.reset(line);
if (!m.find()) {
System.out.println(count + " " + line);
} else {
String year = m.group(1);
String month = m.group(4);
month = month == null ? m.group(7) : month;
month = month == null ? m.group(10) : month;
String date = m.group(5);
date = date == null ? m.group(8) : date;
date = date == null ? m.group(11) : date;
System.out.println(year + "年" + month + "月" + date + "日");
}
}
}
}
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家java程序设计有所帮助。
0
投稿
猜你喜欢
- 前言MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。那
- 写在最前端1.SpringAOP中共有六种通知类型,只要我们自定义一个类实现对应的接口,它们全都是org.springframework.a
- 一、输入输出流对象cout:标准输出流cerr:标准出凑 和cout(只是用于如果是错误时要输出的)cin :&nb
- 1.如图所示,Spring配置文件应该带有是树叶标识,但此处显示的为普通的properties文件2.选择Open Module Setti
- Android Studio 打包 jar 及 aar 包创建工程 New -> Module -> Library在gradl
- 一、Lambda 表达式的基础语 * ambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操
- 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工
- 本篇分享的是springboot多数据源配置,在从springboot v1.5版本升级到v2.0.3时,发现之前写的多数据源的方式不可用了
- using System; using System.Collections.Generic; using System.Text; usi
- 本文实例为大家分享了C语言自定义扫雷游戏的具体代码,供大家参考,具体内容如下实现过程对于用C语言实现扫雷游戏得实现,可将游戏过程分为两个板块
- springboot项目启动,访问报404错误今天在做一个springboot项目的时候,是接着别人的项目写的,写完之后想做一下测试,于是就
- 问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们
- Spring Security简介Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的
- 建库建表DROP DATABASE IF EXISTS mp;CREATE DATABASE mp DEFAULT CHARACTER SE
- 栈和队列的本质是相同的,都只能在线性表的一端进行插入和删除。因此,栈和队列可以相互转换。用栈实现队列—力扣232题题目要求:仅使用两个栈实现
- 1、通过查找API文档:2、Map.Entry是一个接口,所以不能直接实例化。3、Map.entrySet( )返回的是一个collecti
- MyBatis Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。Mybati
- session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获
- Java中可以使用关键字synchronized进行线程同步控制,实现关键资源顺序访问,避免由于多线程并发执行导致的数据不一致性等问题。sy
- 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。数组虽然也可以存