我只是想知道是否有一种方法(可能使用正则表达式)来验证 Java 桌面应用程序上的输入是否完全是格式为:“YYYY-MM-DD”的字符串。
原文由 Sheldon 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要的不仅仅是 regex
,例如“9999-99-00”不是有效日期。有一个 SimpleDateFormat
类是为执行此操作而构建的。更重量级,但更全面。
例如
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
boolean isValidDate(string input) {
try {
format.parse(input);
return true;
}
catch(ParseException e){
return false;
}
}
不幸的是, SimpleDateFormat
既是重量级的又不是线程安全的。
原文由 Steve B. 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
使用以下正则表达式:
如在
使用
matches
方法,锚点^
和$
(分别是字符串的开头和结尾)隐式存在。上面的模式检查与日期的一般“形状”是否一致,但它会接受比有效日期更多的无效日期。您可能会惊讶地发现检查有效日期 - 包括闰年! — 可以 使用正则表达式,但不建议使用。借用 Kuldeep 其他地方的回答,我们都可以为坚持不懈地找到乐趣和钦佩。
在生产环境中,您的同事会喜欢更直接的实施。请记住,优化的第一条规则是不要!