2009-12-09 21 views
8

電子メールの検証と特定の正規表現について多くの質問があります。 [email protected]のトリック(details here)に関するメールを検証するためのベストプラクティスについて教えてください。次のようにJavaScript検証のための私の現在の正規表現があるが、それはハンドルに余分な+をサポートしていません:電子メールアドレス検証のベストプラクティス(Gmailのアドレスに+を含む)

/^([a-zA-Z0-9_.-])[email protected](([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ 

は余分+をサポートする他のサービスはありますか?アドレスに+を許可する必要がありますか、RegExを変更して、gmail.comまたはgooglemail.comのメールをドメインとして許可することはできますか?もしそうなら、変更されたRegExは何ですか?

更新日: +が仕様ごとに有効であることを指摘してくれた皆様、ありがとうございます。私はそれを知らなかったし、今は将来する。 RegExを使ってそれを検証することさえ悪いと言っている人のために、私の理由は私が構築している創造的なデザインに完全に基づいています。私たちのクライアントのデザインは、それがぼやけていると電子メールアドレスの隣に緑色のチェックまたは赤いXが表示されます。そのアイコンは有効な電子メールアドレスかどうかを示していますので、JSを使用してそれを検証する必要があります。

+2

それは、電子メール標準の一部だとき、ほとんどのトリックません。 – tloach

+8

電子メールの検証にRegExを使用しないでください。ユーザーに「アクティベーション」リンクが付いた電子メールメッセージを送信するだけです。電子メール検証のための正規表現正規表現はありません。最小でも読みやすいフォントで印刷されていてもA4用紙に合うものは少なくともありません;-)(http://www.regular-expressions.info/email.html) – Duroth

+0

@tloach私はそれをトリックだと思っています'+'の後ろの部分に関係なく '+'の前にハンドルの最初の部分に電子メールを送信する方法で、すべての電子メールサービスがそれをサポートしているとは限りません。 –

答えて

11

+は、メールアドレスがvalid characterです。ドメインがgmail.comかgooglemail.comでないかどうかは関係ありません

正規表現は実際に電子メールを検証するための非常に良い方法ではありませんが、正規表現を修正してプラスを処理したい場合は、以下にそれ:[email protected]はそれに応じて有効な電子メール:この正規表現は仕様に対して検証しない方法の例として、

/^([a-zA-Z0-9_.-\+])[email protected](([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ 

+0

私は、電子メールアドレスの検証を処理するための最良の方法について興味があります。 – Zoidberg

+0

私は彼があなた自身の正規表現を動かすのではなく、実績のある、テストされたライブラリを使う方が良いということを意味すると思います。このようなライブラリのJavaの例はApache Commonsです。 –

+1

http://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validationを参照してください。 –

5

正規表現を使用して電子メールを検証する必要がある場合は、read the standardまたは少なくともthis articleです。

標準は、この正規表現を使用することを示唆している:それはあなたを怖がられない場合は

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 

、それは私がの線に沿って何かで行くことに傾向がある

+1

「オンラインライブラリやディスカッションフォーラムの正規表現を盲目的にコピーしないでください」という記事からまた、この正規表現_still_は仕様を完全には検証しません。 –

+0

@Aaronありがとう、それは非常に恐ろしいです。私はこれまでに見たことのないふりをするつもりです - 特にエンコードされたキャラクター! –

3

:)をする必要があり/[email protected] 。+ \ .. + /簡単な間違いをチェックする。その後、大部分の誤植は依然として構文上有効な電子メールアドレスになるので、実際に存在することを確認するために、アドレスに電子メールを送信します。

2

この仕様では、本当にクレイジーな醜い電子メールアドレスが許可されています。私はしばしば、完全に正常な、有効な電子メールアドレスについて不満を訴えるWebサイトでも非常に悩まされますので、有効な電子メールアドレスを拒否しないようにしてください。合法的なものを拒絶するよりも、違法なアドレスを受け入れる方が良いでしょう。

他の人が示唆しているように、私は/[email protected]++/のような単純な正規表現を使用して確認メールを送信します。妥当性を確認することが重要な場合は、法的なメールアドレスがあなたの訪問者以外の誰かに属している可能性があるため、確認することは重要です。または、意図せずに致命的な誤植が含まれている。

*編集:[email protected]が有効なメールアドレスであるため、正規表現のドメイン部分からドットを削除しました。だから私の超簡単な検証でも有効なアドレスは拒否されました。@が入っているものすべてを受け入れることには、何か欠点がありますか?

+2

トンガ政府が「to」ccTLDに「MX」エントリを追加できず、「mcv @ to」などのアドレスを実際の電子メールアドレスにする理由はありません。彼らはすでに 'http:// to'(URI短縮サービスのために)で動作するWebサーバを持っているので、確かに非現実的ではありません。 –

関連する問題