DOBON.NET DOBON.NETプログラミング掲示板過去ログ

金額形式(カンマ区切り)をチェックするには?

環境/言語:[環境(WindowsXP Pro)、使用言語(VB.NET2005)、.NET Frameworkのバージョン(2.0)]
分類:[ASP.NET]

はじめまして。

早速、質問なんですが、テキストボックスに金額を入力させています。

RegularExpressionValidatorコントロールを使って入力チェックをしています。
現在、ValidationExpressionに下記の正規表現を設定しています。

^[0-9]+$

これでは、カンマ区切りの金額で入力された場合、エラーになってしまいます。
どうか、カンマを含んだ金額(数字)を入力させるにはどのようにしたらいいのでしょうか?
どうか、皆さんのお知恵を貸して下さい。
宜しくお願いします。
何か進展がありましたら書き込みます。
では、失礼します。
こんにちは。

この、元々の正規表現はご自分で考えられました?
自分で考えたのであれば、カンマを含んだときの場合もすぐわかりそうなものですが。
とりあえず正規表現について検索でも何でも調べてみてください。そうすればおのずとわかると思います。

それでもわからない場合はまた質問してください。
回答ありがとうございます。

はい、一応ネットで調べながら作成しました。

^[0-9,]+$

上記のような正規表現だとカンマのみでも入力できてしまいました。

0円から999,999,999円までの金額をチェックする正規表現を考えて
いますが...

申し訳ありませんが再度、アドバイス宜しくお願いします。
では、また進展がありましたら書き込みます。
2006/09/08(Fri) 22:38:38 編集(投稿者)

> ^[0-9,]+$
> 上記のような正規表現だとカンマのみでも入力できてしまいました。
> 0円から999,999,999円までの金額をチェックする正規表現を

その範囲であれば、『^\d{1,3}((,\d{3}){0,2})$』では如何でしょう。


# RegularExpressionValidator ではなく、Regex クラスでしか試していませんが。

----
[追記]
しまった。これだと "00,001" なども許してしまうか…。
2桁以上ある時に、先頭にゼロを許可しないとすると、こんな感じになるかな。

 『^(0|([1-9](\d{0,2})((,\d{3}){0,2})))$』
こんにちは。

失礼しました。最初の質問だと正規表現がまるっきりわからないままどこかでパクっ
て来たように見えたもので。
申し訳ないです。

> はい、一応ネットで調べながら作成しました。
> ^[0-9,]+$
> 上記のような正規表現だとカンマのみでも入力できてしまいました。

確かにこれだとカンマが入っても大丈夫ですが、カンマだけだったりカンマが複数並
んでいたり、そもそもカンマが3桁ごとに入っていなくても通ってしまいますね。
(まぁカンマが複数あったり桁が違っていたりしても仕様で通せそうですが)

魔界の仮面弁士さんの示してくださった正規表現でもできそうですね。
個人的にはちょっと複雑そうな処理は全部 CustomValidator に任せてしまいます。
あとは JavaScript やサーバー側でゴリゴリチェック。
おはようございます。

書き込みが遅くなって申し訳ありません。
魔界の仮面弁士さんの正規表現をRegularExpressionValidatorコントロール
のValidationExpressionに設定して確認したところ、動きました。

本当にご丁寧に正規表現を書いて下さりありがとうございました。
自分なりに魔界の仮面弁士さんの正規表現を分析しながら勉強したいと
思います。皆さん、ありがとうございました。
解決済み!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=25436&forum=7&start=8

.NETでの正規表現では[0-9]と¥dは、イコールではありません。
なんてのがありますけど

DOBON.NET | プログラミング道 | プログラミング掲示板