メールアドレスチェック
では、以上のことをふまえて、メールアドレスのチェックをしてみましょう。
今回は、携帯を含むことにします。
携帯を含まない場合は、Perlメモ
を使うとほぼ完璧なメールチェックができると思います。
まず、携帯で許可されているアドレスはというと、
つまり、Docomoがかなり緩いアドレスなので、Docomoにあわせることになります。
となると、3社に共通しているのは、「アドレスの頭に数字はダメ!」
ということですね。
でも、PCは「アドレスの頭に数字OK」な訳ですから、
結局のところ、
「@マークを挟んで前後に1文字以上の英数字、 ー(ハイフン).(ドット)_(アンダースコア)があって、 @の後ろに1文字以上の.(ドット)があって、 それ以外に1文字以上の英数字ー(ハイフン).(ドット)_(アンダースコア) があるメールアドレス」
ということになります。
ここでは、OKが1、NGが0、空白の場合は2が返るようにします。
まず、メールアドレスの欄が空白だった場合の処理(2)
my($str) = @_; #チェックする文字 my $result = 1; #何もチェックにかからなければ1を返す if($str eq ''){ $result = 2; } else { #ここに、空白じゃなかった場合の処理 .....
これで空白だったら、2を返すという処理ができました。
続いて、空白じゃなかった場合。
unless($str =~ /^[0-9a-zA-Z\_\.\-]+@[^.]+\..+/){ $result = 0;
「^[0-9a-zA-Z\_\.\-]」 文字列の最初に英数字、アンダースコア、ドット、ハイフン
があって、
「+@[^.]+\..+/」
次に@がきて、その後はドットじゃないものがきて、さらにドットが1個以上ある
アドレスに、
「unless」
マッチしなかったら、
$result = 0; } else { $result = 1; }
0(NG)を返す、それ以外だったら1(OK)を返す
という感じです。
あとは、サブルーチンを呼び出す部分で、
2の場合、1の場合という風に分岐をつくってやればいいです。