2011-06-20 26 views
3

は私がのためにエラーを見つけるために、正規表現のステートメントに値を渡しjQuery('#textbox').val();を使用してtextboxで電子メールをコンマ区切りの文字列を正規表現カンマ区切りの電子メール

^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})+(\s?[,]\s?|$))+$

を動作するように、この正規表現のステートメントを取得しようとしています

"[email protected], [email protected],[email protected]"

しかし、いくつかの理由でそれがエラーを返している:のような文字列。私はhttp://regexpal.com/を実行しようとしましたが、わかりません。

NB:これは単なるクライアント側のテストです。私は経由でサーバー側の電子メールを.NET4.0を使って検証します。私の喉を再開しないでください。ここでの目的は、単純なエラーを排除することです。

エスケープバージョン:

^([_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,3})+(\\s?[,]\\s?|$))+$

+6

文字列を 'split( '、')'で分割してから、各電子メールをより単純な正規表現で実行するのはなぜですか? –

+0

@Pablo - 応答に感謝します。 '+(\ s?[、] \ s?| $)'のみカンマ区切りの値に関連します。残りは電子メールの検証です。たとえ私が電子メールを分割したとしても、私はまだこの方法でこれを実行しているでしょうか? –

+0

あなたはどんなエラーが表示されますか? –

答えて

2

あなたは大幅パブロが言ったように、その後、繰り返し、個々の電子メールを検証するために正規表現を適用し、カンマで最初の分割によって物事を単純化することができます。あなたはまた悪いものを指摘することもできますが、それには大きな注意点があります。

Comparing E-mail Address Validating Regular Expressionsの正規表現をご覧ください。私が今見つけられなかったさらに良い正規表現がありますが、RFCで指定されている有効な電子メールアドレスのルールが非常に複雑であるため、電子メールをチェックする正しい正規表現は非常に複雑です。

あなたの場合、この部分(\.[a-z]{2,3})+は私に飛び出しました。 2文字または3文字のグループ{2,3}私はしばしばトップレベルのドメインを検証しようとしていますが、(1)あなたの正規表現はこれらのグループの以上を許可します。そして(2)このよう.info.museumとしてドメイン

サーバーへの最終検証を残しながら、真剣に無効なアドレスを拒否するように私のアドバイスは、できるようにすることです(は、彼らのみ3文字のドメインが合法と思っていたので。多くのサイトが私の.usアドレスを拒否する)基本的に(何でも)@(何でも)(何でも) - 「at」と「dot」のみをチェックし、もちろん複数の点を許可します。

EDITは: "シンプル" 正規表現のための例は、

[^@][email protected][^.]+(\.[^.]+)+

これは

と一致していません[email protected]

注:@の左側に許可されているためであっても、これは、いくつかの有効な電子メールアドレスを拒否します - でも、別の@ - それは、すべてが適切にエスケープだ場合。しかし、私はReal Lifeで25年間電子メールを使ったことがありません。

+0

すばらしく:)私は代わりにこの単純なバージョンで検証されたスプリッタを使用しましたが、サーバー側ではまだASP.NETで検証しています。 –

関連する問題