gmail の受信用エイリアスのメールアドレスを preg_match - PHPプロ!Q&A掲示板

1460

  • 0P

gmail の受信用エイリアスのメールアドレスを preg_match

質問日時 / 2008年8月31日 11:36 (最終編集:8月31日 11:39)    回答数 / 2件

Questioner:  vaiostar  このエントリーをはてなブックマークに追加 

キーワード / 正規表現    preg_match    eregi   

こんにちわ。

gmail の受信用エイリアス(プラス記号)を正規表現でチェックするには

  1. eregi('^[-!#$%&\*+/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&\*+/0-9=?A-Z^_a-z{|}~])*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', $email)

でOKなのですが preg_match の場合はうまくいきません。

ちなみに eregi と preg_match の違いは、「Perl 互換の正規表現構文を使用する preg_match() の 方が、多くの場合、ereg() よりも速く動作する」とか「NFAエンジンか、POSIX NFAエンジンかの違い」なので、eregi でも良いのですが、preg_match で jason+lang@gmail.com のようなメールアドレスをチェックするにはどうしたらいいでしょうか?

また、お伺いしたいのですが、メールアドレスの正規表現チェックは何をお使いですか?
多種多様なメールアドレスのフォーマットに対応しつつも、(DNSを使用しない)メールアドレスの有無チェックができる最強の正規表現探しています。
ご教示頂ければ幸甚です、よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01tezcello> preg_match の場合はうまくいきません どのように
 ┗A01-1vaiostartezcelloさん、 早速アドバイスありがとうございま

回答一覧

並び替え:

A01 満足
answerertezcello [8月31日 12:26]

preg_match の場合はうまくいきません
どのように上手くいかないのでしょう?

パターンを記述する時に、デリミタが必要ですがお忘れでは無いですよね?
更に、デリミタと同じ文字をパターン中に使う場合はエスケープが必要です。

[_a-zA-Z0-9] は、¥w と表現できるので、多少見やすく出来ますね。

メールアドレスのチェックはとても難しいです。
こんな記事が参考になりませんか?
http://www.tt.rim.or.jp/~canada/comp/cgi/tech/mailaddrmatch/


メールアドレスに使える文字を多少制限した上で、チェックしている所が大部分なのでは無いでしょうか。
(あるいは、簡易的なチェックしかしない)

この意見に回答する

ツリーへ TOPへ

A01-1
replyervaiostar [8月31日 18:56]

tezcelloさん、

早速アドバイスありがとうございます。
うまくいかない理由はケアレスミスでした、、、一つエスケープするのを忘れてました。
↓でOKでした。お手数取らせてすいません。

  1. preg_match("/^[-\+\w](\\.?[-\+\w])*@[-\+\w]+(\.[-\+\w]+)*(\.[a-zA-Z]{2,4})$/", $email)


参考に頂いたURLを拝見しましたが、おもしろいですね。あのようなメールアドレスは初めて見ました。
一般的でないにしろ、実在するとは・・・。
メールアドレスのチェックについては、完璧なものは難しいようですね。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
function関数の引数にすると処理結果が変わる!!
 このエントリーをはてなブックマークに追加 
A
>$Result = mysql_query($Sql,$Con); $Conをglobal宣言していないのでローカル変数になっています(つまり呼び出し元で使っている$Conとは違う変数です)。そして$Conには何も値がセットされていません。 h...

>>続きを読む

gallu様。shimix様。分かりやすいご解説ありがとうございます。変数のスコープ(有効範囲)は初めのうちは間違いやすいので、関数内で定義された変数かどうかを気をつけて書いてみてください。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)