Ruby 正規表現を使用した電子メール検証
概要
私は大量のメールのリストを確認しています。多くのメールにタイプミスがあります。有効なメールをチェックする文字列を構築しようとしています。
これは私が正規表現として持っているものです。
def is_a_valid_email?(email)
(email =~ /^(([A-Za-z0-9]*\.+*_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\+)|([A-Za-z0-9]+\+))*[A-Za-z0-9]+@{1}((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,4}$/i)
end
電子メールにアンダースコアとピリオドが 1 つだけ含まれている場合は合格します。名前自体に複数のピリオドが含まれるメールがたくさんあります。正規表現でそれを確認するにはどうすればよいですか。
[email protected] # <~~ valid
foo.bar#gmail.co.uk # <~~~ not valid
[email protected] # <~~~valid
[email protected] # <~~ not valid
get_at_m.e@gmail #<~~ valid
誰かが正規表現を書き直すのを手伝ってくれますか?
解決策
これは、少なくとも 2.2.1 以降、標準ライブラリに組み込まれています。
URI::MailTo::EMAIL_REGEXP
*警告 上記では、a@b が有効な電子メール アドレスであると見なされます。