2

標準の「軍事時間」を表す文字列に一致する有効な Java 正規表現を作成しようとしています。

String militaryTimeRegex = "^([01]\d|2[0-3]):?([0-5]\d)$";

これにより、コンパイラ エラーが発生します。

無効なエスケープ シーケンス (有効なものは \b \t \n \f \r \" \' \ )

どこが間違っているのでしょうか?!?

4

4 に答える 4

3

\Javaでは、すべての文字をダブルエスケープする必要があります。

String militaryTimeRegex = "^([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$";

なんで?は文字列のエスケープ文字であり、文字列内のどこかに\リテラルを表示する必要がある場合は、それもエスケープする必要があります。\\\

于 2013-02-08T18:56:18.443 に答える
3

文字をエスケープするには、必ず二重の円記号を使用してください。

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";

単一の円記号は、エスケープシーケンスの開始を示します。\\に表示される文字を取得するには、を使用する必要がありますString


あなたのコメントに答えるために、あなたは現在一致しているだけ19:00です。パターン:00の最後にある追加を考慮する必要があります。String

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d)$";
于 2013-02-08T18:56:05.057 に答える
2

エラーメッセージによると\d存在しません。で脱出\\d

于 2013-02-08T18:56:20.960 に答える
2

は有効な正規表現構文ですが\d、Java文字列のバックスラッシュをエスケープする必要があります。

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";
于 2013-02-08T18:56:51.187 に答える