ギークなお姉さんは好きですか

恋焦がれる理想の男性・ギークを知るため、プログラミングがわかるお姉さんを目指すブログ

不正なメールアドレスを見抜く正規表現

お知らせ

大事なことなのでもう1回だけ言わせてください><
1月22日よりこのブログのURLが変わりました。
1月22日より 新しいURLになります - DTIブログお知らせ版



はじめての正規表現

メールフォームを作った。その全貌は紙面の都合上、別途、日を改めて。
ユーザーが入力したメールアドレスをチェックするときに正規表現が出てきたので、
先にこのヤマに取り掛かる(`・ω・´)


if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $text))

正規表現:メールアドレスかどうか調べる


preg_matchは、正規表現によるマッチングを行う関数のこと。
preg_match("/パターン/", 調べる文字列) の形式。

メールアドレスのチェックで正規表現のお勉強 - moz'B


正規表現についてはここがすごく分かりやすかった!
サルにもわかる正規表現入門


^
は行の先頭、$ は行の最後を意味する。
(カッコ) で半角英数字をグループ化、+ は直前文字の1個以上の繰り返し。
正規表現特殊文字(メタキャラクタ)をエスケープして、その文字が1個以上連続、
あるいはそれ以上続かないところで @ が入る。


・・・と、ドンピシャな記事を見つけて喜んでいたが、よく調べたらサイボウズラボの秋元さんが
「使っちゃだめよ」と言っていた(´・ω・`)
# この指摘を受けて、phpspotさんは該当記事を修正し、訂正記事を書かれています。


これは、"example@so-net.ne.jp"とか"example+tracer@gmail.com"をメールアドレスではないと
判定する。この簡単さだと、メールアドレスじゃないものを通してしまう取りこぼしも多いはず。

phpspotの人は正規表現について語らないほうがいいのでは - 秋元@サイボウズラボ・プログラマー・ブログ

Σがびちょん!そ、そうなのか・・・。Gmail の +(プラス)アドレスを弾くサービス多いよね><
メールアドレスの正規表現チェックで「+」を許容してほしいってF.Kojiさんも言ってた!
+(プラス)を通すには、/^([a-zA-Z0-9])+([a-zA-Z0-9._-+])*@ にすればいいのかな?
うん、+(プラス)は通った。でも本当の本当は、もっとがっつり書かなきゃダメらしい。
これが正解。
Perlメモ - メールアドレスの正規表現

長!!!!!!!!!っっっ!
ウォーリーをさがせ」みたいなことになっている・・・@ はどこだろう・・・
正しい正規表現って難しいなぁ。正しい正規表現って表現はおかしいなあ。


まだ正規表現のさわりしか分かってないけど、これだけでも fuba さんが極めて困難な局面にあると
いうことが理解できたので、自分にとっては大きな進歩である。うれしうぃっしゅ。

 


最後に、参考リンクに感謝!
正規表現でメールアドレスかどうかチェックする
正規表現でメールアドレスを表現しよう
バリデーションなんて要らなくね?