6

小数点の前に最大 13 桁の double をチェックしようとしています。小数点とそれに続く数字はオプションです。したがって、ユーザーは整数または小数を含む数値を書き込むことができます。

まず、私はこれを持っていました:

if (check.matches("[0-9](.[0-9]*)?"))

私は Google でいくつかのページを調べましたが、さまざまな努力にもかかわらず、うまくいきませんでした。私の考えはこのようにすることでしたが、うまくいきません:

[0-9]{1,13}(.[0-9]*)?

どうすればいいですか?

4

6 に答える 6

14

ドットをエスケープすることを忘れないでください。

if (check.matches("[0-9]{1,13}(\\.[0-9]*)?"))
于 2013-01-28T13:30:29.637 に答える
5

まず、ドットをエスケープする必要があります (Java[0-9]{1,13}(\\.[0-9]*)?では )。第二に、ダブルスの別の一般的な表現である科学的表現があることも忘れないでください。したがって、これ1.5e+4も有効な double 数です。最後に、double の数値は負の場合もあれば、整数部分をまったく持たない場合もあるということを忘れないでください。たとえば-1.3、 と.56は有効な double です。

于 2013-01-28T13:32:41.040 に答える
2

ドットをエスケープする必要があり、ドットの後に少なくとも 1 つの数字が必要です

[0-9]{1,13}(\\.[0-9]+)?

ここでRegexrを参照してください

于 2013-01-28T13:31:40.587 に答える
1

コンマとマイナス記号で小数を検証する必要がある場合:

Object testObject = "-1.5";
boolean isDecimal = Pattern.matches("^[\\+\\-]{0,1}[0-9]+[\\.\\,]{1}[0-9]+$", (CharSequence) testObject);

幸運を。

于 2015-02-17T13:52:31.410 に答える
1

ジョンの答えは近いです。ただし、負の値を受け入れる場合は、負の場合に備えて「-」を追加する必要があります。したがって、次のように変更されます-?[0-9]{1,13}(\.[0-9]*)?

于 2014-12-28T05:32:44.513 に答える