2012-01-04 13 views
-4

可能性の重複:
What is the best regular expression for validating email addresses?正規表現を使用した:検証メールアドレス

こんにちは、私は私がメールを検証するために、この正規表現を持っている正規表現 の使用については初心者ですしかし私は意味を理解していない。誰かが私を説明することができますか?

mailPattern = Pattern.compile("[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*@[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*.[a-zA-Z]{2,3}"); 
+0

これはメールアドレスを検証する完全なパターンではありません。私が置いたリンクを見てください。 – MByD

+0

リンクで指定された答えは有用ですが、Javaを使用する場合は最適な解決策ではありません。 Java/JavaMailにはRFC822の仕様に基づいて電子メールアドレスを解析する[組み込みクラス](http://javamail.kenai.com/nonav/javadocs/javax/mail/internet/InternetAddress.html)が既にあります。これを使うと正規表現を直接使うのが望ましいです。 – aroth

答えて

2

私は正規表現

を学習を開始するためにあなたの優れたウェブサイトhttp://www.regular-expressions.info/をお勧めします。しかし、あなたの正規表現は良く思われません。アスタリスクをセットに入れる必要はありません。ここ

が悪いコードです:[[-ZA-Z_0-9] *]

あなたの正規表現の一部に+の代わりに*を使用する必要がある、など

メールを確認します正規表現は(私はそれを読んで、代わりにあなたの彼らの正規表現のいずれかを使用することをお勧めいたします)ここで説明されて: http://www.regular-expressions.info/email.html

+1

'.name'はfrikkin * decade *の周りにありました!しかし、noooooは、すべてのTLDは最大でも3文字です。ああ、ローカル部分で許可されている(そしてそれは '%'のようなよりエキゾチックな文字に頼る前の) '+ 'のようなものはありません。 IDNは存在しません。その正規表現の問題はあまりにも多すぎます:( – Piskvor

+0

は完全に同意します。私は最初にすべてのエラーの投稿を書くようにして、最終的に私の投稿を編集してウェブサイトへのリンクを追加しました;) –

+0

ああ、* * *ウェブサイト。 "この正規表現はすべての有効な電子メールアドレスを検証します(btw、「すべての電子メールアドレス」とは、「この正規表現に一致するものすべて」を意味します。これにマッチしない実際の有効な電子メールアドレスが存在することを気にしてください)」最高の円形推論。 – Piskvor

-1

あなたは正規表現here上のJava SEのチュートリアルを見てみることができます。

4

は、Javaを使用している場合は、はるかに単純なオプションは、あなたのためのアドレスを検証するためにJavaMailのInternetAddressクラスを使用することです:

public boolean isEmailValid(String email) { 
    try { 
     new InternetAddress(email); 
     return true; 
    } 
    catch (Exception e) { 
     return false; 
    } 
} 

これはRFC822に基づいて検証を実行します。あなた自身の正規表現を実際に思いついたり、他の人が思いついた正規表現をコピーしたりする必要はありません。 JavaMailの組み込みユーティリティを使用して、より意味のあるものに移ります。

関連する問題