トップページに戻る

Category

AllArchives

Checker

Credit

メルアドの正規表現に関して

正規表現、というモノに関して最低限以上の知識がある人向けの記事になってしまうが、「入力されたメールアドレスが正しいかどうか判定する正規表現」という話には、プラスアルファがある。ある程度以上正規表現を理解している人の中にも、この点を理解していない人が少なからず存在する、気がする、というか一流ウェブサービスにも不適切な(と僕が思う)正規表現を利用しているケースが少なからず存在する(宅ファイル便もそうだ)のでエントリーにしてみます。


正規表現を最低限は使える、という人向けに導入を行うと、メールアドレスが適切かどうかを正規表現で判定するのは結構大変です。いわゆる一般的なメールアドレスだけを考慮するなら単純なんだけど、本当に全てのメールアドレスを通すのは不可能で、ある程度で「妥協」をしないといけない。ここらへんの話は「メールアドレスに一致する正規表現」を参考に。



で、書きたいのはここから。もちろん「妥協」は必要なんだ。ただ、その妥協の方針は複数存在し、ケースバイケースで方針を選ぶ必要がある、と僕は思う。というか、「メールアドレスが正しいか判定する」と「メールの宛先情報が正しいか判定する」は別の話だと思う。具体的に書くと

  • ユーザーのメルアドなど、アドレスをアカウント的に利用するケース
  • メール送信系のサービスで宛先に利用するケース

と、いう二つ。一般的な正規表現解説に登場する「方針」は基本的に全て前者で、後者を考慮していない。故に以下のような問題が起こる。

  1. サービスを使って、友達などにメールを送りたい
  2. メーラーで、その友達からのメールを開き、「差出人」といった情報をコピー
  3. 貼り付けて送信しようとするとエラー

メールの「To(宛先)」に指定できるのはメールアドレスだけではない。「名前 <メールアドレス>」だって宛先に指定できる。

canada(@home)@tt.rim.or.jp

"me@home"@digital-canvas.com

Tom&Jerry/$100.00@digital-canvas.com

canada@[192.168.0.1]

メールアドレスに一致する正規表現より

というアドレスを考慮する必要があるかどうかは微妙ですが、しかし「名前 <メールアドレス>」は、本当に一般的にメールの宛先に指定する文字列だ。「メール送信系のサービスで宛先に利用するケース」なら、妥協を行うにしたって、ここまでは考慮する必要があるだろう、と、僕は思うのです。宅ファイル便を使う度にメーラーの「名前 <メルアド>」という表示から「メルアド」部分だけを選択してコピーするのが面倒で仕方ない(そうしないと、「特殊文字の入力はできません」と言われる)。メール送信系のウェブサービスを運営する方は、ここまでは考慮して貰えないでしょーか。

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

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

Comment

記事に『いわゆる一般的なメールアドレスだけを考慮するなら単純なんだけど、本当に全てのメールアドレスを通すのは不可能で、ある程度で「妥協」をしないといけない。』とありますが、perl5.6.1 以降の Perl の正規表現なら普通に可能です。

http://www.din.or.jp/~ohzaki/perl.htm#Mail などをご覧下さい。

KD 2007/01/25 10:42:34

ありゃ、その話完全に知りませんでした・・・。Perl進化してるのですね
うーむ、プログラミングに関してもうちょい最新事情を常日頃チェックしておくべきだなぁと思いつつ、貴重な情報提供ありがとうございました

tokix 2007/01/26 21:49:42

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます