1

私はこれらの2つの文字列を持っています:

  1. "2013-01-28 12:10:01.680000".

  2. "2013-01-28 12:10:01".

で始まるすべての文字列に対して true を返す正規表現が必要です: xxxx-xx-xx xx:xx:xx、 x が数値の場合、サフィックスが何であれ (ポイント以降の値)。

今私は使用します:

final String ACCEPTED_FORMAT = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{6}";

しかし、文字列のポイントの後の値をチェックしたくありません。

4

2 に答える 2

2

これは私が思う仕事をするはずです:

final String ACCEPTED_FORMAT = 
        "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d{6})?";

'。'になります そしてそれの後の6桁はオプションです。


ただし、これは日付を検証するための良い方法ではありません。これは、存在しない月や月末以降の日など、あらゆる種類のナンセンスを許可するためです。適切な日付パーサーがあります...日付を適切に検証する場合は、1つを使用する必要があります。

(そして、なぜ日付を適切に検証したくないのか想像するのは難しいと思います。ユーザーがナンセンスを入力できるようにするためのユーティリティは何"2011-02-32 99:99:99"ですか?)

于 2013-02-07T08:30:56.187 に答える
2

あなたの正規表現は

\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d{6})?

編集:- @Stephen C- ドット文字もエスケープする必要があります。(ドットは任意の文字に一致します)

于 2013-02-07T08:34:57.700 に答える