2011-05-29 9 views
1

うまくいきましょう。私はダブルを検証しようとしています。小数点以下1桁にプラスになるようにします。正規表現を使用してJavaの小数点以下桁数に一致させる

良好な値:0.1、2.5、100.1、1、54
不正な値:-0.1、1.123、1.12、ABC、00012.1

は、だから私はここに正規表現を試してみた:

public boolean isValidAge(String doubleNumber) 
{ 
    DoubleValidator doubleValidator = new DoubleValidator(); 
    return doubleValidator.isValid(doubleNumber,"*[0-9]\\\\.[0-9]"); 
} 

私も試しました:"*[0-9].[0-9]""\\\\d+(\\\\.\\\\d{1})?""[0-9]+(\\\\.[0-9]?)?"

何も動作していないようです。私は使用していますorg.apache.commons.validator.routines.DoubleValidator

これらの正規表現が動作しない理由を私はこれを行うことができます別の方法はありますか?私は正規表現を使用する必要はありません。

おかげ

+1

「1」や「54」のような小数点なしの数字はどうですか? – Jonah

+0

番号に00012.3のようないくつかの先行ゼロがある場合はどうなりますか? – Rogach

+0

申し訳ありませんが、私はそれをカバーしていませんでした。 – Sara

答えて

7

これは、番号なし先行ゼロを有するマルチデジットプリ小数点数(S)のいずれかとの数だけ、または単にゼロ、および任意選択で1つの小数点と小数点を一致します桁。

^([1-9]\d*|0)(\.\d)?$ 

ではなくjava.util.regex.Patternライブラリを使用してください:それは大きな文字列(が先行ゼロを受け入れないように更新され、 @Nicklasクレジット)で番号が一致しないように、文字列の先頭/最後の試合が含まれています。

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

あなたは文字列に正規表現を入れているので、私はあなたがここに正規表現をよく読んですることをお勧めしますバックスラッシュ

"^([1-9]\\d*|0)(\\.\\d)?$" 

をエスケープするようにしてください、彼らはへの重要なツールです話すために「あなたのベルトの下に」ある。

http://www.regular-expressions.info/

+1

'^([1-9] \\ d * | 0)(\\。\\ d)?$' –

+0

@Nicklas:これは拒否する0.3 – amit

+0

@amit:いいえ、そうではありません。それは – Jonah

3
Pattern.compile ("[0-9]+\\.[0-9])").matcher (doubleNumber).matches() 

は、トリックを行うだろう。
あなたも何の小数点を許可しないようにしたい場合:

Pattern.compile ("[0-9]+(\\.[0-9])?").matcher (doubleNumber).matches() 

EDIT:なし先行ゼロについてコメントを以下の整数でOKです:

Pattern.compile("([1-9][0-9]*|[0-9])(\\.[0-9])?").matcher(doubleNumber).matches() 
-1

あなたが小数を検証する必要がある場合ドット、コンマ、ポジティブ、ネガティブ:

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

幸運。

+0

なぜ私に教えてくれないのなら、間違っている。 – august0490

関連する問題