web-dev-qa-db-ja.com

メールを盲目的に受け入れないように検証するための最も単純な正規表現は何ですか?

ユーザーが私のサイトでアカウントを作成するとき、私はevery入力を受け入れないようにメールのサーバー検証を行いたいです。

ハンドシェイク検証 を実行する方法で、確認を送信します。

私はシンプルではなく、最高を探していますが、何も検証しないシンプルすぎません。制限がどこにあるべきかはわかりません。正規表現ではできないため、正規表現は正しい検証を行いません。

私は正規表現に固有の構文と視覚的な複雑さを制限しようとしています。この場合、どれも正しいからです。

そのためにどの正規表現を使用できますか?

72
eKek0
^\S+@\S+$
84
chaos

標準に準拠した電子メールアドレスのみを受け入れる正規表現を作成することができます。ただし、厳密には標準に準拠していないが機能する電子メールアドレスがいくつかあります。

基本的な検証のための簡単な正規表現を次に示します。

@文字が含まれています:

@

@とその後のピリオドが含まれます。

@.*?\.

@の前、ピリオドの前、およびその後に少なくとも1文字あります。

.+@.+\..+

@が1つだけ、@の前、ピリオドの前、およびその後に少なくとも1文字あります。

^[^@]+@[^@]+\.[^@]+$

ユーザーAmoebaMan17は、空白を削除するためにこの変更を提案します。

^[^@\s]+@[^@\s]+\.[^@\s]+$
213
Guffa

AmoebaMan17によるこの表現の微調整は、アドレスがドットで開始/終了するのを停止し、隣接する複数のドットも停止するはずだと思います。一般的な問題を排除しながら、再び複雑にならないようにします。

(?!.*\.\.)(^[^\.][^@\s]+@[^@\s]+\.[^@\s\.]+$)

動作しているように見えます(しかし、私はRegEx-pertではありません)。ユーザーがピリオドで終わる文の終わりからメールアドレスをコピー&ペーストするという問題を修正します。

つまり、新しいメールアドレス[email protected]です。

3
Carl Howarth

^ [a-zA-Z0-9 _。+-] + @ [a-zA-Z0-9-] +。[a-zA-Z0-9-。] + $

  • たった1つ @
  • いくつかのドメインとサブドメイン
2
coto

お選びください

RFC 2822 Section 3.4.1 に準拠するものは次のとおりです。

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

念のために。 :)

2
JP Alioto