メソッドを使用してString.matches(String regex)
、文字列が正規表現に一致するかどうかを確認します
私の見解では、正規表現regex="[0-9]+"
は、0 から 9 までの数字を少なくとも 1 つ含む文字列を意味します。
しかし、デバッグ"3.5".matches("[0-9]+")
するとfalseが返されます。
では、何が問題なのですか?
matches
正規表現が文字列全体と一致するかどうかを判断します。true
文字列に一致が含まれている場合は返されません。
文字列に特定の正規表現との一致が含まれているかどうかをテストするには、 を使用しますPattern.compile(regex).matcher(string).find()
。
(正規表現 ,[0-9]+
は、0 から 9 までの数字と少なくとも 1 つの数字のみを含む任意の文字列に一致します。魔法のように実数と一致するわけではありません。任意の実数に一致するものが必要な場合は、たとえばJavadoc をDouble.valueOf(String)
参照してください。 、double の検証に使用される正規表現を指定します。この正規表現では、16 進数の入力、NaN、および無限大が許可されますが、何が必要かをよりよく理解できるはずです。)
または、正規表現を編集して、1 つ以上の数字を含む任意の文字列に直接一致するようにします.*[0-9]+.*
。
10 進数と一致させたい場合は、正規表現を にする必要があります\d*\.?\d+
。ネガも必要な場合は、\-?\d*\.?\d+
.
.
ではなく、文字列全体0-9
をテストします。matches