PHP プログラムでメールを取得しようとしており、次の正規表現を使用しています
([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU
これは、標準の電子メールを取得するためにうまく機能しているようです. me @ gmail.com
またはなどyou @ hotmail.com
これが失敗するのは、co.uk などの末尾のメールです。今、正規表現に co.uk を追加しようとしました
([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|co.uk|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU
しかし、それは元の正規表現と同じ出力を与えるだけです。メールの出力は you@co です。私も英国で追加しようとしました。これには何が欠けていますか?それを捨てるのは2期目ですか?
理想的には、.com .net .org co.uk .au .ca のすべてのメールをキャッチできるようにしようとしています。基本的に、米国、英国、オーストラリア、およびカナダのすべての電子メールを検索しています。私の間違いが、米国以外の電子メールを次のように適切に出力できることを誰でも見つけることができますyou @ yoursite.co.uk
かyou @ yoursite.co
ありがとうございました。たとえば、表示されている電子メールのスペースは、これを投稿するためだけに存在します。
編集:私は電子メールを検証しようとはしていません.一連の電子メールは配列内にあるものであれば何でもかまいません.データベースの特定のものだけをキャッチしようとしています. 最初にそれを明確にしなかったことをお詫び申し上げます。
Edit2:これが私の問題に対する私の作業文字列です。みんな、ありがとう
^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$^