私はPHPアプリケーションを開発中です。私は、文字列が通貨価値として使用可能であることを検証する必要があります。私は以下のバリデーションをしたいと思っています:リベラルREGEX for Money
$5.00
5
5.00
£5.00
妥当な文字列を受け入れるのに十分なパターンを望みます。私は通貨記号を受け入れることも望みます。しかし、通貨を検証するためには、最終的に値を2つの10進数の浮動小数点として格納するため、任意の文字または文字にすることができます。したがって、データベースに保存されると、 '5.00'または '5.00'は '5.00'になります。私は現在、以下を使用しています:
preg_match('/^[0-9]*\.?[0-9]+$/',$value)
"5"または "5.00"で動作しますが、通貨記号は考慮しません。通貨記号を考慮してこれを調整するにはどうすればよいですか?
ありがとうございました!
編集:私の正規表現ではあまりにも多くの小数を許可するように見えます。あなたはまた、私はその問題を整理するのに役立つことができますか?任意の通貨記号:あなたはUnicode Character Properties
\p{Sc}
か\p{Currency_Symbol}
を使用する必要がありますすべての通貨記号を許可するように
これを行うための既存の*ライブラリ*があると思います。単一の正規表現(perlの怪物を除く;)はすべてのケースを網羅していない可能性があります。まず、適切なマネータイプ値への変換を含む、どのケースがサポートされているか、そしてそれらが意味するものを正確に判断することです。 –
@pst ...ありがとう!私はこれが正規表現の理想的な使用ではないことを知っていますが、私はちょうど比較的簡単な方法を探していたか、または単純な検証を提供していました。これは防弾である必要はありません。あなたはそのようなライブラリを知っていますか? – tollmanz
$、ユーロ、米ドルなどの通貨デポーターの場合は、それぞれ個別の通貨デポーターを持っている必要があります。そうでなければ、十分に包括的ではありません。 – Nightfirecat