<?php function email_check($email) { $pattern = '/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@\[?([\d\w\.-]+)]?$/'; return preg_match($pattern, $email, $matches) && checkdnsrr($matches[2], 'MX'); } この程度で十分な気がするんですが、どうでしょうね…。 ドメインの存在チェックする方がよっぽど使えると思うのです。 checkdnsrr 同じページに checkdnsrr を利用したメールアドレスのバリデーション例がありますね。eregi を利用しているのはいただけませんが…10年前の投稿なのでやむなし。 ちなみに、@より前の部分については、もっとこうした方がいいのではなどありましたら「優しく」ご指摘ください