4

通貨の値に一致する正規表現を見つけようとしています。

数字と小数点以下1桁のみを一致させたい

許可された

  • 10
  • 100
  • 100.00

禁止されている

  • アルファ文字
  • 100,00
  • +/- 100

私は検索を行い、運がなくてもかなりの数を試しました。

アドバイスいただければ幸いです

4

4 に答える 4

6
if (preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $subject))
{
    # Successful match
}
else
{
    # Match attempt failed
}

補足: 必要な小数点以下の桁数を制限したい場合は、次のようにすることができます:

/^[0-9]+(?:\.[0-9]{1,3})?$/im

そう

100.000

一致しますが、

100.0001

しません。

さらにヘルプが必要な場合は、コメントを投稿してください。

PS可能であれば、上記の数値フォーマッタを使用してください。ネイティブ関数は常に優れています (そして高速です)。それ以外の場合は、このソリューションが役に立ちます。

于 2009-05-02T18:31:20.150 に答える
4

これはどう

if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
   // correct currency format
} else {
  //invalid currency format
}
于 2012-04-16T05:45:45.073 に答える
2

正規表現を使用する他の方法を検討することをお勧めします。

たとえば、NumberFormatter柔軟な数値と通貨の解析書式設定を提供するクラスがあり、国際化サポートが組み込まれています。

これは PHP 5.3 以降に組み込まれており、以前のバージョンの PHP 5 では拡張機能として利用できます。

于 2009-05-02T15:32:13.327 に答える
0

この正規表現を試してください:

^(?:[1-9]\d+|\d)(?:\.\d\d)?$
于 2009-05-02T14:55:30.997 に答える