7

ここには、電子メールの検証と特定の正規表現について多くの質問があることを知っています。username+anythingelse@gmail.comトリックを持っていることに関してメールを検証するためのベストプラクティスが何であるかを知りたいです(詳細はこちら)。+JavaScript 検証用の現在の RegExp は次のとおりですが、ハンドル内のエクストラはサポートされていません。

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

extra をサポートする他のサービスはあります+か? アドレスでa を許可する必要がありますか、または正規表現を変更して、ドメインを持つ、またはドメインとしての+電子メールに対してのみ許可する必要がありますか? もしそうなら、変更された正規表現は何でしょうか?gmail.comgooglemail.com

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

4

5 に答える 5

11

+は、電子メール アドレスで有効な文字です。ドメインが gmail.com や googlemail.com でなくてもかまいません。

正規表現は、実際には電子メールを検証するためのあまり良い方法ではありませんが、プラスを処理するように正規表現を変更したい場合は、次のように変更してください。

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

この正規表現が仕様に対してどのように検証されないかの例として: 電子メール..@-.comはそれに従って有効です。

于 2009-12-09T14:04:35.337 に答える
5

正規表現を介してメールを検証する必要がある場合は、標準を読むか、少なくともこの記事を読んでください。

標準では、次の正規表現を使用することが推奨されています。

(?:[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])+)\])

それがあなたを怖がらせないなら、それはすべきです:)

于 2009-12-09T14:09:10.773 に答える
3

単純な間違いをチェックするために、/.+@.+\..+/ の行に沿ったものを使用する傾向があります。次に、そのアドレスに電子メールを送信して、実際に存在することを確認します。ほとんどのタイプミスは、依然として構文的に有効な電子メール アドレスになるためです。

于 2009-12-09T14:11:00.477 に答える
2

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

他の人が示唆しているように、/.+@.+/ のような単純な正規表現を使用してから、確認メールを送信します。正当な電子メールアドレスが訪問者以外の誰かに属している可能性があるため、検証するのに十分重要である場合は、検証するのに十分重要です. または、意図しないが致命的なタイプミスが含まれています。

a@to*編集:はまだ有効な電子メール アドレスであるため、正規表現のドメイン部分からドットを削除しました。そのため、非常に単純化された検証でさえ、有効なアドレスを拒否しました。前後に何かがある @ を含むものすべてを受け入れることには、まったくマイナス面がありますか?

于 2009-12-09T14:38:54.063 に答える
1

この主題に関する非常に優れた記事I Knew How To Validate An Email Address until I Read The RFC

于 2010-07-01T07:46:52.410 に答える