November 6, 2009

メールアドレスの正規表現

perlfaq9 - Networking ($Revision: 8539 $) - search.cpan.org
    my $atom       = qr{[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+};
    my $dot_atom   = qr{$atom(?:\.$atom)*};
    my $quoted     = qr{"(?:\\[^\r\n]|[^\\"])*"};
    my $local      = qr{(?:$dot_atom|$quoted)};
    my $domain_lit = qr{\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\]};
    my $domain     = qr{(?:$dot_atom|$domain_lit)};
    my $addr_spec  = qr{$local\@$domain};

ちなみに、これをまとめると、

/^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&’*+/=?\^`{}~|-]+)(?:.(?:[a-zA-Z0-9_!#\$\%&’*+/=?\^`{}~|-]+))*)|(?:”(?:\[^\r\n]|[^\”])*”)))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&’*+/=?\^`{}~|-]+)(?:.(?:[a-zA-Z0-9_!#\$\%&’*+/=?\^`{}~|-]+))*)|(?:\[(?:\\S|[\x21-\x5a\x5e-\x7e])*\])))$/

参考サイト:http://blog.livedoor.jp/dankogai/archives/51189905.html