2013-03-27 27 views
5

通貨フィールドを正規表現で検証したいとします。次のパターンエントリを許可します。2桁の整数または浮動小数点数の正規表現

1.23 
1 
.45 
0.56 
56.00 

カンマは使用できません。私は\d+(\.\d\d)を試しましたが、最初のエントリ、4番目のエントリ、5番目のエントリのみが許可されています。 \d+(?:\.\d\d+)?は3番目以外のすべてを許可します。

+0

\ d *(\。\ d *)を試しましたか? – Melanie

+0

いいえ、試してみましょう。 –

+0

どのようにその通貨ですか?私は浮遊物しか見ることができません。 – Bergi

答えて

7

数字の前に\d+の代わりに\d*を使用して、0桁以上の数字と一致させてください。アンカー(^$)を追加してください。そうしないと、利用可能な一致がある限り合格になります。あなたは、少なくとも一桁があることを確認するために先読みを使用することができ、必要なので、もしこれがまた、空の文字列を検証します:

^(?=.*\d)\d*(?:\.\d\d)?$ 
+0

あなたのソリューションはうまくいきます。それは '1.254'と' 23.1'を許可します。私は小数点以下2桁を許可したいと思います。小数点以下2桁の数字しかないでしょうか? –

+0

@KrishanuDeyそれは私には分かりませんでした。 '\ d +'は '\ d \ d'です。 –

+0

@ExplosionPills:That Worked。 :) どうもありがとう。 –

3

Regexes for floating-point numbersは解決される問題です:

少なくとも二つの場合
\d*\.?\d+ 

小数:

(\d*\.\d)?\d+ 

はそれをより理解できるようにするには:

\d+|\d*\.\d{2,} 

そして、ちょうど二つの小数のために:

\d+|\d*\.\d{2} 

あなたの言語によっては、文字列全体に一致しなければならないように式をanchorすることを忘れないでください。

関連する問題