1. ホーム
  2. java

[解決済み] 文字列がHex文字のみを含むことを確認するための正規表現

2022-02-12 12:57:02

質問

私はこれまで正規表現を使ったことがありませんでしたが、文字列を扱うのに非常に便利であることがわかりました。私はいくつかの チュートリアル (例えば)しかし、私はまだ、文字列内の16進数文字をチェックする簡単なJava正規表現を作る方法を理解することができません。

ユーザーは、テキストボックスに次のようなことを入力します。 0123456789ABCDEF で、入力が正しいかどうかを確認したい。 XTYSPG456789ABCDEF を実行した場合、false を返します。

正規表現でそのようなことが可能なのでしょうか、それとも私がその仕組みを誤解していたのでしょうか?

どのように解決するのですか?

はい、正規表現を使えば可能です。

^[0-9A-F]+$

説明します。

^ 行頭です。
[0-9A-F] 文字クラス。0〜9の任意の文字、またはA〜Fの任意の文字。
+ 量詞。上記のうち1つ以上。
$ 行末。


この正規表現をJavaで使うには、たとえば matches メソッドを String に対して実行します。

boolean isHex = s.matches("[0-9A-F]+");

なお matches は完全に一致するものだけを見つけるので、この場合は行頭と行末のアンカーは必要ありません。オンラインで動作を確認してください。 イデオン

また、大文字と小文字のA-Fの両方を許可したい場合もあり、その場合はこの正規表現を使用することができます。

^[0-9A-Fa-f]+ドル