質問: ### 前提・実現したいこと 現在PHPで正規表現を学んでいます。そこで、メールアドレスをcheckするpreg_matchを考えているのですが、こちらの内容で対応できているか確認したいです。 preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD', $mail) /対象文字は、アルファベットと数字、_とハイフン /.は一番初めにしないように追加で設定※繰り返しは可能 /@は1回 /最後の文字は絶対にアルファベットで2文字~6文字の間 /最後に悪質なコードを不可にするためにDのオプション設定 できれば、他にどんな書き方があるのか、知りたいです。
回答: 確かメールアドレスは RFC(細かく読んでいませんが) では 大文字・小文字どちらでも可能なはずですので、わたしは ``` preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $value); ``` で、チェックしています。 RFC ではドメイン名は 大文字・小文字区別なしで メールアドレスは区別ありでしたか? (詳しい方、教えてください) ウィキペディアでは「実際には区別されていない実装がほとんどである。一般的には小文字で表記される」と書かれていますね。