1

私は電子メールの検証を見ていました。連続したRFC仕様を読みました(ドット)は、mail..me@server.comのように許可されていません。

しかし、異なるワイルド文字を連続して発生させることはできますか?たとえば、 mail。 $me@server.com

もしそうなら、野生の文字が異なっている限り、1回だけ出現する正規表現を作成するにはどうすればよいですか?、のようなものを受け入れるべきではありませんが、、のようなものを受け入れる必要があり.. && $$ます&$ .$ &.

\^(&&|$$|..)\許可されているワイルド文字のリストがたくさんあるので、etcのような正規表現はオプションではないと思います。

4

6 に答える 6

5

RFC準拠の電子メール検証正規表現がいくつかあります。それらはきれいではありません、実際、それらはかなりひどいもので、何百ものキャラクターにまたがっています。あなたは本当にそれを作りたくありません、それを使うか、あなたが理解して維持することができる通常のコードを書くかのどちらかです。

これはRFC準拠の正規表現の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])+)\])

拡張情報と代替の(より実用的な)正規表現については、このリンクを確認してくださいhttp://www.regular-expressions.info/email.html

于 2009-09-09T07:04:06.260 に答える
2

私は最終的に次のようなものを使用しました:

/^([a-zA-Z0-9]+([\.\!\'\#\$\%\&\*\+\-\/\=\?\^\_\`\{\|\}\~]{0,1}))*[a-zA-Z0-9]+\@(([a-zA-Z0-9\-]+[\.]?[a-zA-Z0-9]+){0,2})[\.][a-zA-Z]{2,4}$/

きれいではありません:)が、私の仕様に非常に役立ちました。

于 2010-11-16T12:58:54.967 に答える
1

はい、$のような異なる文字を連続して複数回出現させることができます。sam$$iam@example.comは完全に有効なメールアドレスです。

于 2009-09-09T07:07:09.123 に答える
0

メール検証の単純な正規表現 + /[.&$]{2}/ のような二重文字をチェックする別の正規表現を使用します

于 2009-09-09T13:42:05.587 に答える
0

これらの回答を参照してください。

stackoverflow.com/questions/997078/email-regular-expression

stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses

stackoverflow.com/questions/36261/test-expand-my-email-regex

前に述べたように、電子メール アドレスが本当に有効かどうかを確認する唯一の方法は、そのアドレスに電子メールを送信することです。

于 2009-09-09T18:27:38.317 に答える
0

この電子メール検証で何をしているかにもよると思いますが、フォーム入力の目的で、オンラインの ASP.NET 正規表現バリデーターで何年もこれを行ってきました。

数か月間、これを処理するためのかなりクールな正規表現があると思いました。ネットで見つけたのですが、人気商品のようです。ただし、フォームの検証で電子メールアドレスが気に入らなかったという申請書に記入しようとしている顧客から電話を受けることが何度かありました。そして、何人の人が同じ問題を抱えていたのに電話しなかったかを誰が知っていますか.

厳しすぎるよりも、貪欲さの側で過ちを犯した方が良いという教訓を私は難しい方法で学びました. 言い換えれば、電子メール アドレスを有効 (および無効) にするものを定義するルールが非常に多いため、すべてのベースをカバーする自由形式の正規表現を定義するだけです。一部の無効な電子メール アドレスにも一致する可能性がありますが、私の目的では、それほど大きな問題ではありません。その上、正直なところ、ほとんどの場合、ユーザーが自分のメールアドレスを台無しにしている場合、それはスペルミスであり、いずれにしても正規表現では検出されません。

だからここに私が今使っているものがあります:

^[^<>\s\@]+(\@[\w\-]+(\.[\w\-]+)+)$

そして、これをテストする実際の例を次に示します。

http://regexhero.net/tester/?id=b90d359f-0dda-4b2a-a9b7-286fc513cf40

これは、連続したドット、ダッシュなどに引き続き一致するため、これはあなたの主な懸念には対処しません。また、正直なところわからないため、これがすべての有効な電子メールアドレスに一致するとはまだ主張できません. しかし、私は過去 3 年間、25,000 人以上のユーザーと一緒に使用しており、苦情は 1 つもありませんでした。

于 2009-09-09T13:34:12.317 に答える