0

日付時刻をサポートする Java 正規表現を構築しようとしています (時刻コンポーネントは軍事時刻です):

月/日/YYYY HH:mm:ss

@Test
public void testRegexPattern() {
    String regex = "([0-9]{2})/([0-9]{2})/([0-9]{4}\\s^([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d)$)";

    String supposedDateTime = "12/31/1969 19:00:00";

    Assert.assertTrue(supposedDateTime.matches(regex));
}

supposedDateTimeが正規表現と一致しないため、このテストは失敗しています。そこにいる正規表現の達人は、その理由を見つけることができますか? 前もって感謝します。

4

1 に答える 1

3

なぜあなたcaret(^)は途中でいるの\\sですか?それを除く。それが問題を引き起こしているのです。また、String#matchesメソッドを使用すると、 を使用する必要さえありませんanchors

したがって、次の正規表現を使用できます。

"([0-9]{2})/([0-9]{2})/([0-9]{4}\\s([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d))"

正規表現の実際の問題について話しましたが、正規表現で日付をテストするべきではありません。むしろ、日付文字列SimpleDateFormatに適切なパターンで使用してください。parse

于 2013-02-11T20:15:43.623 に答える