teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

参考サイトを追加

2017/09/25 04:20

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -1,7 +1,22 @@
1
1
  正規表現でEメールアドレスバリデーションというジャンルは、一流プログラマの間でもたびたび話題・ネタになるほどの非常に奥深い処理、平たく言えば「**地雷**」です。
2
2
 
3
+ * [PHPしか書けないザコがメールアドレス正規表現でガチ勢に挑んでみた - Qiita](https://qiita.com/mpyw/items/257eabe0b43b1e02e6f7)
4
+ * [この世の99%のEメールアドレスにマッチする正規表現、現る | 十円玉という名のブログ](https://www.10yendama.com/archives/1342)
5
+ * [そろそろメールアドレスを正規表現だけでチェックするのは終わりにしませんか? - Qiita](https://qiita.com/ShibuyaKosuke/items/0b9a8fddaefb2060a14a)
3
- PHPには[検証フィタ機能](http://jp2.php.net/manual/ja/filter.filters.validate.php)でさくっとチェックができるので、これを使うのが無難だと思います。
6
+ * [正規表現でのメーアドレスチェックは見直すべき – ReDoS | yohgaki's blog](https://blog.ohgaki.net/redos-must-review-mail-address-validation)
4
7
 
8
+ 特にPHP初級者が不完全な正規表現でメールアドレスのバリデーションをしている姿がしばしばバカにされるほどです。
9
+
10
+ * [404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ](http://blog.livedoor.jp/dankogai/archives/51189905.html)
11
+ * [もうおまえらPHPerは正規表現をブログにうpするんじゃねえ! - noopな日々](http://d.hatena.ne.jp/noopable/20090320/1237511152)
12
+ * [さっきPHPerの正規表現を見たが、本当に唖然とした。Disりたい… - conflict error](http://webkit.seesaa.net/article/129745981.html)
13
+
14
+ PHPには**[検証フィルタ機能](http://jp2.php.net/manual/ja/filter.filters.validate.php)でさくっとチェックができる**ので、これを使うのが無難だと思います。(これでも完璧なチェックは難しいと言われています)
15
+
5
16
  ```php
6
17
  filter_var('hoge@example.com', FILTER_VALIDATE_EMAIL);
7
- ```
18
+ ```
19
+
20
+ もちろん文字列のチェックだけではそのメールアドレスが有効かどうかの判定はできないので、最終的には様々なサイトがやっているように、実際に**確認メールを送ってそこの認証用URLにアクセスさせる**といった段取りが必要になってきます。
21
+
22
+ もう少し丁寧な実装では、確認メール送信前に**ドメインの有効性をチェック**をする場合もあるようです。