我正在尝试对字符串进行测试,如果它的格式为 dd-mm-yyyy。请问有什么帮助吗?
对不起,我只是一个初学者。
除了检查dd-mm-yyyy
允许输入之类的输入之外99-99-9999
,您还可以使用SimpleDateFormat
它来实际解析并检查它是否是有效日期:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
如果日期无效,它会抛出ParseException,然后您可以捕获并适当地处理错误。
编辑:
99-99-9999
正如 Bohemian 指出的那样,这实际上并没有在输入上引发异常。相反,将错误日期解释为合法日期有点“翻车”。我认为他们可能故意这样做是为了使日期算术更容易。比如解析后10-13-2000
变成10-1-2001
(没有第13个月,所以改为下一年的第1个月)。如果你想让它抛出异常,你需要告诉它不要宽容:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false); // <== Added this line
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
String test = "13-04-1999";
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
sdf.setLenient(false);
sdf.parse(test);
} catch(ParseException ex) {
//string is not valid Date in your format
}
if(myString.matches("\\d{2}-\\d{2}-\\d{4}")){
//Do something
}
双反斜杠用作一个用于编译器按字面意思解释第二个,而作为字符串一部分的字面量用于制作\d
数字的转义序列。