• ベストアンサー

フリーメールは投稿できないようにする掲示板

お世話になります。 フリーメールで投稿できないようにするにはどうしたら良いのでしょうか? 恥ずかしいくらいの初心者ですので宜しくお願いします。 (※フリーメールって言っても、一般的な5・6社程度ですが…) if ($in{'email'} eq "") { &error("メールアドレスが記入されていません"); } if ($in{'email'} eq "*@yahoo.co.jp") { &error("フリーメールは使えません"); } if ($in{'email'} eq "*@hotmail.com") { &error("フリーメールは使えません"); }  ・  ・ ワイルドカードの使い方も実はわからないのです。 宜しくお願い致します。

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

・サブドメイン指定不要版 ・大文字小文字混合可能版 @list = ('hotmail.com','yahoo.co.jp',・・・・); foreach (@list) { if($in{'email'} =~ /(\@|\.)\Q$_\E$/i) {&error("フリーメールは使えません");} }

lemon530
質問者

お礼

迅速で適切なご回答に感激しました。 動作も正常に機能します。 本当にありがとうございました。 ~ /(\@|\.)\Q$_\E$/i) の部分はチンプンカンプンですが 正規表現ブックを見ながら解読してみます。

その他の回答 (1)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

配列に入れてループすれば良いでしょう。 まず、正規表現が違います。 .+\@yahoo.co.jp としてくださいね。 (初心者でも分かるように、あまり複雑な書き方はしませんので。) @freemail = (".+\@yahoo.co.jp", ".+\@hotmail.com", ・・・); if ($in{'email'} eq "") { &error("メールアドレスが記入されていません"); } foreach $fm (@filemail) { if ($in{'email'} =~ $fm) { &error("フリーメールは使えません"); } } などとしてはいかがでしょうか。

lemon530
質問者

お礼

正規表現がわからない(勉強してないだけの)私でも なんとなく記述がわかりました。 動作確認も@freemail のスペリングが展開するところのやつが違っていたので アレと思いましたが直したら正常動作でした。 一応、動作確認したものを付けておきます。(後に続く人のために) @freemail = (".+\@yahoo.co.jp", ".+\@hotmail.com"); foreach $fm (@freemail) { if ($in{'email'} =~ $fm) { &error("フリーメールは使えません"); } } 繰り返しですが、本当にありがとうございました。 勉強にもなったし、さわやかな週末になりそうです。

関連するQ&A