- ベストアンサー
テキストフォームで数字が3桁以上または以下の入力があったらエラーをする処理。
こんにちわ。テキストフォームに入力した数字が3桁以上または以下だったらエラー画面になるという処理を考えています。3桁いがいはだめという処理はどうすればいいんでしょうか?記述の仕方を教えてください。よろしくお願いします。
- みんなの回答 (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)
No.1です。 見事に変数の書き方が違っていました。 他の言語もいくつか使っているもので・・慣れてしまったのでしょうか。 正しくはこうです: if($x>999){ print("4桁以上は入力できません"); }else if($x<100){ print("2桁以下は入力できません"); }else{ #正常時の処理 } 他にも間違いがあるかもしれません。こんなんで申し訳ない。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
$data="1234"; if($data=~ /^\d{3}$/){ ;#3桁の時 } else { ;#3桁以外の時 }
3桁以上/以下ではなくて、4桁以上/2桁以下と捉えます。 整数ならば、999超過又は100未満でエラーを出力するというのはどうでしょうか。 例えば: xがその数字の変数であるとすると if(x>999){ print("4桁以上は入力できません"); }else if(x<100){ print("2桁以下は入力できません"); }else{ #正常時の処理 } exit; 見たいな感じでしょうか。 (しばらくPerlはいじってないので、文法が違うかもしれませんが、意味することは大体あっていると思います。