とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


サイドバー

言語

サーバ関連

ツール

API

読み物

その他

perl:expr_isemailaddress

メールアドレスの書式かチェックする - Perl

この記事は2006年10月21日に書かれたものです。

メールアドレスがきちんと入力されているかチェックを行いたい。半角英数字と一部の記号を用い、「ユーザー名@ドメイン名」といった形になっているか確認する。

サンプル

;#
;#入力チェック
;#
 
if( isMailAddress('m.ka-tsu-be@ichikoro.com') ){
  print "メールアドレスです。\n";
}
else{
  print "メールアドレスではありません。\n";
}
 
 
#---------------------------------------
#メールアドレスかチェックする
#---------------------------------------
sub isMailAddress{
  my $str = shift || return(undef);
 
  #-- メールアドレスか --#
  if( $str =~ /^([a-zA-Z0-9\.\-\/_]{1,})@([a-zA-Z0-9\.\-\/_]{1,})\.([a-zA-Z0-9\.\-\/_]{1,})$/ ){
    return(1);
  }
  #-- メールアドレスではないか --#
  else{
    return(0);
  }
}

ここでは非常に簡便な方法を使用している。 もしも、もっと厳格にチェックしたいのなら、「([a-zA-Z0-9\.\-\/_]{1,})@([a-zA-Z0-9\.\-\/_]{1,})\.([a-zA-Z0-9\.\-\/_]{1,})」の部分をPerlメモの大崎氏が書かれている次のような正規表現に置き換えれば良い。

$mail_regex = q{(?:[^(\040)<>@,;:“.\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:”.\\\\} . q{\[\]\000-\037\x80-\xff])|“[^\\\\\x80-\xff\n\015”]*(?:\\\\[^\x80-\xff][} . q{^\\\\\x80-\xff\n\015“]*)*”)(?:\.(?:[^(\040)<>@,;:“.\\\\\[\]\000-\037\x} . q{80-\xff]+(?![^(\040)<>@,;:”.\\\\\[\]\000-\037\x80-\xff])|“[^\\\\\x80-} . q{\xff\n\015”]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015“]*)*”))*@(?:[^(} . q{\040)<>@,;:“.\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:”.\\\\\[\]\0} . q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} . q{\])(?:\.(?:[^(\040)<>@,;:“.\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} . q{;:”.\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} . q{^\x80-\xff])*\]))*};

このチェックもあくまで書式のチェックであり、実在するメールアドレスかどうかのチェックではない。また正常に届くかどうかのチェックを行っているわけではないので注意されたい。

関連書籍

failed to fetch data: unkown error

failed to fetch data: unkown error

failed to fetch data: unkown error

関連ページ

perl/expr_isemailaddress.txt · 最終更新: 2020/06/23 14:10 (外部編集)