92

ユーザーが自分のサイトでアカウントを作成するときに、メールのサーバー検証を行い、すべての入力を受け入れないようにしたいと考えています。

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

私は単純なものを探していますが、最高ではありませんが、単純すぎて何も検証されません。正規表現では正しい検証を行うことができないため、正規表現は正しい検証を行わないため、どこに制限を設ける必要があるかわかりません。

正規表現に固有のシンタックスと視覚的な複雑さを制限しようとしています。この場合、すべてが正しいためです。

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

4

5 に答える 5

267

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

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

@ 文字を含む:

@

@ とその後のどこかにピリオドが含まれています。

@.*?\.

@ の前、ピリオドの前、およびその後に少なくとも 1 つの文字がある:

.+@.+\..+

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

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

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

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

また、ピリオドを 1 つだけ受け入れる場合[外部編集: 推奨されません。有効なメール アドレスと一致しません] :

^[^@\s]+@[^@\s\.]+\.[^@\.\s]+$
于 2009-04-12T23:01:47.953 に答える
118
^\S+@\S+$
于 2009-04-12T21:23:26.987 に答える
8

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

  • 1のみ @
  • いくつかのドメインとサブドメイン
于 2016-03-21T21:51:02.287 に答える
1

好きなのを選びな。

これは、 RFC 2822 セクション 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])+)\])

興味のある方はどうぞ。:)

于 2009-04-12T23:40:18.237 に答える