• ベストアンサー

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

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

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

  • ベストアンサー
  • 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はいじってないので、文法が違うかもしれませんが、意味することは大体あっていると思います。