最近做的事情,日期时间用的是字符串在传,需要对之进行校验。
网上看了看,没找到非常满意的,于是自己动手,写了一个。
其中不完美的是:没有根据闰年判断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正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...
在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...
java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数 3.58是否为金额:true 3.582是否为金额:false 1284789@qq.com是否为email:true 1284789qq.com是否为email:false 1823753112是否为手机号:...
### 正则表达式校验身份证号码 #### 知识点概述 身份证号码在中国大陆具有唯一性,用于标识每一个公民的身份。身份证号码分为15位和18位两种格式,其中18位号码是在15位基础上增加了一个4位出生年份以及一位校验码...
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
在探讨如何利用正则表达式来判断一个字符串除指定字符外不包含其他特殊字符之前,我们首先需要了解正则表达式的基本概念以及本场景中的具体需求。 ### 正则表达式简介 正则表达式是一种强大的文本处理工具,能够...
正则表达式的作用是将字符串分割成多个小组,并通过这些小组来匹配指定的模式。在Java中,我们可以使用java.util.regex包来使用正则表达式。在这个包中,有两个主要的类:Pattern和Matcher。 Pattern类是正则...
在Java中,我们可以利用java.util.regex包中的Pattern和Matcher类来对日期字符串进行正则校验。日期校验正则表达式的构建需要符合日期的格式和规则,例如年、月、日的可能取值。以下是根据给定文件信息提取的关键...
`Pattern`类用于编译正则表达式字符串,而`Matcher`类用于执行与字符串的匹配操作。 #### 三、身份证号码的格式规则 1. **长度**:15位或18位。 2. **前17位**:均为数字。 3. **第18位**: - 对于18位身份证号码...
例如,在Python中,可以使用`datetime`模块的`strptime`函数来尝试解析给定的字符串,如果格式不正确,会抛出`ValueError`异常。Java中,`java.time`包下的`DateTimeFormatter`类提供了类似的功能。对于更复杂的验证...
随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕...
java正则实现解析算术表达式 (仅限+-*/和括号)
在Java编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,常用于字符串匹配、查找、替换和校验等场景。对于手机号码的校验,正则表达式能够帮助我们快速有效地验证输入的号码是否符合指定的格式。...
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、数据提取等IT领域。在这个“常用正则表达式HTML,JAVA合集”中,我们主要关注的是HTML和Java环境下的正则...
判断字符串是否包含emoji表情
在Java编程中,正则表达式(Regular Expression)是一种用于匹配字符串的强大工具。它广泛应用于文本处理、数据验证、模式匹配等场景。下面是一些基本概念及其在Java中的实现: - **基本语法**: - `^` 表示字符串...
例如,你可以创建一个正则表达式对象,然后使用它来测试字符串是否符合特定模式,或者从字符串中提取匹配的子串。 在实际应用中,使用正则表达式可能涉及到以下步骤: 1. 创建正则表达式:定义你要匹配的模式,例如...
1. **格式检查**:检查输入的字符串长度是否为18位,且只包含数字和X。可以使用`matches()`方法配合正则表达式完成。 ```java public boolean isLengthValid(String id) { return id.length() == 18 && id.matches...
本文将围绕一个特定的正则表达式 `/^([A-Za-z0-9])+$/` 展开讨论,该表达式主要用于验证输入字符串是否仅包含数字和字母。 #### 正则表达式解析 该正则表达式 `/^([A-Za-z0-9])+$/` 可以被细分为几个关键部分进行...