標準の「軍事時間」を表す文字列に一致する有効な Java 正規表現を作成しようとしています。
String militaryTimeRegex = "^([01]\d|2[0-3]):?([0-5]\d)$";
これにより、コンパイラ エラーが発生します。
無効なエスケープ シーケンス (有効なものは \b \t \n \f \r \" \' \ )
どこが間違っているのでしょうか?!?
\
Javaでは、すべての文字をダブルエスケープする必要があります。
String militaryTimeRegex = "^([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$";
なんで?は文字列のエスケープ文字であり、文字列内のどこかに\
リテラルを表示する必要がある場合は、それもエスケープする必要があります。\
\\
文字をエスケープするには、必ず二重の円記号を使用してください。
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)$";
エラーメッセージによると\d
存在しません。で脱出\\d
は有効な正規表現構文ですが\d
、Java文字列のバックスラッシュをエスケープする必要があります。
String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";