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

  • 2009/02/12(木) 00:00:00

お知らせ

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

新URL、RSSはこちら。よろしくでござる!
http://lovecall.dtiblog.com/
http://lovecall.dtiblog.com/?xml



はじめての正規表現

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


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 さんが極めて困難な局面にあると
いうことが理解できたので、自分にとっては大きな進歩である。うれしうぃっしゅ。

 


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


LINEで送る

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/29(金) 12:42:24

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/29(金) 10:49:17

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/16(土) 05:17:22

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/15(金) 04:24:19

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/12(火) 19:02:47

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 08:48:07

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 21:12:33

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 12:19:13

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 09:40:46

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 07:04:57

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 22:27:19

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 10:54:02

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 02:26:13

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/04(月) 18:13:04

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 02:06:51

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 23:13:26

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 21:57:48

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 17:49:00

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 06:07:20

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 03:07:26

正規表現でメールアドレスを表現しよう

■表記法 ^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$ バックスラッシュ(\)と半角の¥(円マーク)は同義である 以上 ■ちょっと解説 ^は(次の項目が)行の最初の文字である...

[Perl]ギークなお姉さんは好きですか 不正なメールアドレスを見抜く正規表現

ギークなお姉さんに初めてのトラックバック。 ギークなお姉さんは好きですか 不正なメールアドレスを見抜く正規表現 の最後にあるfubaさんのnegative wordsを見て猛烈に最適化してみたくなった。 use utf8; use Regexp::Assemble; binmode STDOUT=>’utf8’; @words = spl

ドコモもauはとりあえず"da..me."@を受け取れるようにしとくべし

けだし同感なのだけど、これでもメアドを再設定しない人をどうするかという問題は残る。 ドコモもauもいいかげんにメールアドレス設定の仕様を直せ。 とりあえずドコモの携帯で確認したが、2007年11月現在のいまも、***.@docomo.ne.jpとか**....***@docomo.ne.jpといったメ...

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する