Java 上的正则表达式日期格式验证

2022-08-31 14:13:28

我只是想知道是否有一种方法(也许使用正则表达式)来验证Java桌面应用程序上的输入是否完全是格式化为“YYYY-MM-DD”的字符串。


答案 1

使用以下正则表达式:

^\d{4}-\d{2}-\d{2}$

if (str.matches("\\d{4}-\\d{2}-\\d{2}")) {
    ...
}

使用该方法,锚点和(分别是字符串的开头和结尾)隐式存在。matches^$


答案 2

您需要的不仅仅是一个,例如“9999-99-00”不是有效日期。有一个类就是为了做到这一点而构建的。更重量级,但更全面。regexSimpleDateFormat

例如:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

boolean isValidDate(string input) {
     try {
          format.parse(input);
          return true;
     }
     catch(ParseException e){
          return false;
     }
}

不幸的是,它既是重量级的,又不是线程安全的。SimpleDateFormat