• ベストアンサー

テキストフォームで数字が3桁以上または以下の入力があったらエラーをする処理。

こんにちわ。テキストフォームに入力した数字が3桁以上または以下だったらエラー画面になるという処理を考えています。3桁いがいはだめという処理はどうすればいいんでしょうか?記述の仕方を教えてください。よろしくお願いします。

  • Perl
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

「3桁の数字」というのが 100 ~ 999 までの整数なのか、あるいは、例えば 024 のように数字3文字の組み合わせなら何でもよいのか、によってチェック方法が少し変わりますが、どちらの場合も正規表現でチェックするのが簡単でしょう。 前者ならば   if ($data !~ /^[1-9]\d\d$/) { エラー } 後者ならば   if ($data !~ /^\d{3}$/) { エラー } となります。 なお、Perl は数値の比較・演算を行う時、ちょっと気を利かせて 123abc を 123 として扱ってくれるため、単に   if ($data < 100 || 999 < $data) { エラー } としてしまうと、123abc のような不正な入力値の場合にエラーとすることができません。

その他の回答 (3)

noname#15223
noname#15223
回答No.3

No.1です。 見事に変数の書き方が違っていました。 他の言語もいくつか使っているもので・・慣れてしまったのでしょうか。 正しくはこうです: if($x>999){ print("4桁以上は入力できません"); }else if($x<100){ print("2桁以下は入力できません"); }else{ #正常時の処理 } 他にも間違いがあるかもしれません。こんなんで申し訳ない。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

$data="1234"; if($data=~ /^\d{3}$/){ ;#3桁の時 } else { ;#3桁以外の時 }

noname#15223
noname#15223
回答No.1

3桁以上/以下ではなくて、4桁以上/2桁以下と捉えます。 整数ならば、999超過又は100未満でエラーを出力するというのはどうでしょうか。 例えば: xがその数字の変数であるとすると if(x>999){ print("4桁以上は入力できません"); }else if(x<100){ print("2桁以下は入力できません"); }else{ #正常時の処理 } exit; 見たいな感じでしょうか。 (しばらくPerlはいじってないので、文法が違うかもしれませんが、意味することは大体あっていると思います。

関連するQ&A

  • 4桁の数字以外を入力したらエラーを表示したいです

    if文とwhile(for)文の範囲の課題で4桁の数字を入力してどうこうというプログラムを作っています。 課題には書かれていませんが、4桁の数字以外を入力したときにエラーを表示させるにはどんな方法がありますか? 10000以下をはじけばいいんじゃないかと思ったのですが、これだと「0001」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。 なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

  • charを使わずに4桁の数字以外を入力したらエラーを表示したいです

    http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。

  • EXCEL:3桁以上の数字の下1桁について0又は5にする方法

    こんにちは。EXCELでの事務処理に困っております。 3桁以上の数字を入力し(例:253)、その数字の下一桁に対し0~4は0に、5~9は5にして、全体を表示させる方法を教えてください。(例:253の場合、下1桁は3ですので、3は0~4の間にあるので、表示としては250になります) よろしくお願いします。

  • 少数点以下2桁以上の入力でエラーメッセージを表示するには

    データの入力規則で、少数点以下2桁以上の数値が入力されたらエラーメッセージが表示されるようにできないでしょうか? (小数点以下1桁[3.2→OK]  小数点以下2桁[3.26→エラーメッセージ]) または、条件付き書式で上記条件でセルの色を変えることはできますか? よろしくお願いします。

  • DBに半角数字10桁入力すると別数字になります

    phpとphpmyadminを連携しており、フィールドはid(AUTO_INCREMENT)を含め、11項目作成しています。 phpでは9つのフォームがあり、入力された値が2~10つ目のフィールド(すべてint(10))に格納され、11こ目のフィールドはdateで取得した値が入ります。 php上で、生成されたsql文をechoで表示させると、入力したとおりになっているのですが、phpmuadminの中身を見てみると、10桁フルで入力した値が、決まって「2147483647」となっており、困っています。 変数もechoで細かく見てみましたが、どこもおかしなところはありません。 DBに格納された数字のみがおかしなことになっています。 さらに、いろいろ試してみたところ、 1234564757はそのまま 2222222222は2147483647 2222222229は2147483647 4545454545は2147483647 1111111112はそのまま 1111111111はそのまま 2222はそのまま(9桁までの数字の連続なら正常) のような感じで、1の場合は10桁でも変な数字にならず、ほかの数字が連続するときまって2147483647になるようです。 11桁からはプログラムによりエラーが出て再入力を求めるようにしており、11桁以上の場合は正常にエラーが出るので、おかしくなるのは、10桁のときのみです。 格納寸前の変数も直後の変数や$sqlもおかしなところは全くないので、何が狂わせているのかがわからずにいます。 php:5.3.8 mysql:5.5.16 phpmyadmin:3.4.5 Apache:2.2.21 (Win32) つたない説明で分かりづらいかもしれませんが、大変困っておりますので、 何かアドバイス等があれば是非ご教授いただければ幸いです。

    • ベストアンサー
    • MySQL
  • 特定の数字でなければエラーを出したい

    こんにちは。 Visual Studio 2005を用いてVisual C++を使ったフォームアプリケーションを作成しています。 3つのテキストボックスA、B、Cとボタンがあります。 テキストボックスに数字(半角)を入力させてボタンを押させるのですが、ボタンを押した時に、 Aは0,1,2 Bは0,1,2,3 Cは0,1,2,3,4 のどれかを入力している時のみOKにして、それ以外の文字や数字を入力していた場合はエラーメッセージを出すようにしたいのです。 できるだけ簡単なコードで記述したいのですが、良い方法があればどうぞよろしくお願いします。

  • 非連結テキストボックスの数字入力について

    どうしても分からないので質問します 今、アクセス97にてフォームを作成しています 構成はメインフォーム + サブフォーム ×2です コードを入力するテキストボックスをメインフォームに作成したのですが実際入力してみると桁溢れの場合、 「実行時エラー’3163’:フィールドが小さすぎるため、追加しようとするデータの量を受け入れることができません。データの量を少なくして、挿入または貼り付けを行なってください。」とエラーメッセージが表示されてしまいます エラーを出ないようにするにはどうすればいいのでしょうか? 宜しくお願いします

  • 1桁のみの数字は全角、2桁以上の数字は半角にした

    1桁のみの数字は全角、2桁以上の数字は半角にしたいと思います。 例えば、2011年3月19日の場合は、3のみを自動で全角にし、それ以外を自動で半角にしたいと思っています。 その為、そのようなことが出来るツールや手順などをご存知の方がいらっしゃいましたら、ご教示の程よろしくお願いします。 以上、よろしくお願いします。

  • 様々な桁の数字を、一様の桁になおす関数

    エクセル2010を使用しているものです。 現在各セルに様々な桁の数字が入力されています。 例    2012   354861   811021354   80011687   5447845   741741 これらの数字を、頭に0をつけて全て12桁に直したいです。 例だと、2012    →000000002012      354864   →000000354864      811021354 →000811021354 どのような関数を作ればこのような処理が一括でできるでしょうか?教えてください。よろしくお願いします。

  • 携帯でフォームに入力するとき自動的に数字入力にするには?

    携帯のフォームにて、電話番号を入力するときに、そこのテキストボックスにカーソルをあわせると、いままではひらがな入力だったのが、自動的に数字入力になるようにしたいのですが、なにかいい方法ありますか?javascriptでできそうかなあっておもったんですけど、携帯なのでjavascriptは使えません。。。 CGIでうまくやる方法ありませんか? できればperlで記述したいですが(できればというか本当はperlしかわかりません^^) なにかうまくやる方法ありませんか?ぜひともご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう