質問: `^((19|20)\\d\\d)([- /.])(0[1-9]|1[012])([- /.])(0[1-9]|[12][0-9]|3[01])$` 現在JAVAで日付有効性チェックソースコード作成しております。 しかし、ソースコードは 1990 01 01 1990-01-01 上の条件も全部trueです。 私は1990-01-01 <<この形式だけtrueにしたいです。 ただ1990-01-01 <<この形式だけtrueにしたいだったらどうすればいいですか。 `^((19|20)\\d\\d)([- /.])-(0[1-9]|1[012])([- /.])-(0[1-9]|[12][0-9]|3[01])$` 上みたいに挑戦した事もありますができませんでした。
回答: 日付の有効性チェックを自作することはあまりお勧めできません(「車輪の再発明」になるので)。`commons-lang`の`DateUtils`などを利用した方がいいと思います。 ``` try { DateUtils.parseDateStrictly("1990 01 01", new String[] {"yyyy-MM-dd"}); } catch (ParseException e) { // 日付として有効ではない場合の処理を実装 } ```