質問
通貨の値に一致する正規表現を見つけようとしています。
数字と小数点1つだけを一致させたい
許可
- 10
- 100
- 100.00
許可されていません
- アルファ文字
- 100,00
- +/- 100
検索しましたが、運がなくてもかなり試しました。
アドバイスをお願いします
解決
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 可能であれば、上記の数値フォーマッタを使用してください。ネイティブ関数は常に優れています(高速です)。それ以外の場合は、このソリューションが役立ちます。
他のヒント
これについてはどうですか
if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
// correct currency format
} else {
//invalid currency format
}
正規表現を使用する他の方法を検討することもできます。
たとえば、 NumberFormatter
があります。柔軟な数値と通貨を提供するクラス解析およびフォーマット、国際化サポートが組み込まれています。
PHP 5.3以降に組み込まれており、以前のバージョンのPHP 5で拡張機能として使用できます。
この正規表現を試してください:
^(?:[1-9]\d+|\d)(?:\.\d\d)?$
所属していません StackOverflow