groovy/java正则表达式检查是否;yyyy.MM.dd“;格式

groovy/java正则表达式检查是否;yyyy.MM.dd“;格式,java,regex,date,groovy,Java,Regex,Date,Groovy,我有一个表示日期的字符串,例如“2010.12.25”。如何控制它是否为“yyyy.MM.dd”格式?不需要检查日期的有效性。您可以使用类似的方法检查日期的格式,因为使用regex验证日期格式是一种非常糟糕的做法,IMHO String strDate = "2010.12.25"; DateFormat df = new SimpleDateFormat("yyyy.MM.dd"); try { Date date = df.parse(strDate); // If it c

我有一个表示日期的字符串,例如
“2010.12.25”
。如何控制它是否为“yyyy.MM.dd”格式?不需要检查日期的有效性。

您可以使用类似的方法检查日期的格式,因为使用
regex
验证日期格式是一种非常糟糕的做法,IMHO

String strDate = "2010.12.25";
DateFormat df = new SimpleDateFormat("yyyy.MM.dd");
try {
    Date date = df.parse(strDate);
    // If it comes here, then its a valid format
} catch (ParseException pe) {
    // If it comes here, then its not a valid date of this format.
}

使用
simpleDataFormat
parse()
字符串,处理异常以确定它是否是有效的日期字符串。不要使用正则表达式检查日期。e、 g:

2010.30.40
2010.13.34

尝试使用方法
isValid(String-dateStr)
对此进行检查

试试这个

 String a = "2010.12.12";

            System.out.println(a.matches("\\d{4}\\.\\d{2}\\.\\d{2}"));

输出将为

您有正则表达式,在Groovy中,您可以执行以下操作:

boolean match = "2010.12.12" ==~ /\d{4}\.\d{2}\.\d{2}/

您还可以使用Groovy日期解析来检查日期格式的准确性。

控制是什么意思?您到底需要什么?使用简单的日期格式,请参阅
匹配任何字符,例如
1234567890
将匹配的字符。@Imagination,OP不需要日期的有效性。@NandkumarTekale-请参阅文档
mm
表示分钟,
mm
表示月份。您能详细说明一下为什么您认为使用regex验证日期格式是一种非常糟糕的做法吗?@Busted:因为这不是regex的目的。DateAPI和格式正是为此目的创建的。重新发明轮子是没有意义的。这不会检查日期的有效性。@来自Q的想象:“没有必要检查日期的有效性”它会验证这个
1234.67K90
。奇怪的是,它并不总是适用于例如,如果您输入的日期为2016.01.99,它仍然会解析它
boolean match = "2010.12.12" ==~ /\d{4}\.\d{2}\.\d{2}/
try {
    Date.parse('yyyy.MM.dd', '2013.12.21')
} catch(java.text.ParseException p) {
    println "Unparseable Date"
}
​