2014-05-11 92 views
1

我想写一个小程序,我要求用户输入一个电子邮件地址。然后我验证它是否有效的电子邮件地址。像“[email protected]”将是有效的,但“example @@ example.com.org”将是无效的。邮件地址验证JAVA

这是我的代码,我已经做了检测是否有@和。人物在那里,但我需要确保只出现一次,那@点之前出现(。)

import java.util.Scanner; 

public class email { 
    public static void main(String args[]) 
    { 
     Scanner skanni = new Scanner(System.in); 

     System.out.println("Sládu inn email adressuna thína."); 
     System.out.println("Email: "); 
     String mail = skanni.nextLine(); 

     boolean b1=mail.contains("@") && mail.contains("."); 

     if (b1) 
     { 
      System.out.println("This email is valid"); 
     }else{ 
      System.out.println("this email is invalid"); 
     } 


    } 
} 

如果有人可以帮助,这将不胜感激!

编辑:谢谢大家的答案和帮助。如果其他人将来会做类似的事情,我会在下面发布最终代码。哦,你可以忽略评论。你可能会不明白:)

import java.util.Scanner; 
import java.util.regex.*; 

public class email { 
    public static void main(String args[]) 
    { 
     Scanner skanni = new Scanner(System.in); 

     System.out.println("Sládu inn email adressuna thína."); 
     System.out.println("Email: "); 
     String mail = skanni.nextLine(); 

     /*Skilgreining á eftirfarandi kóda 
     *^táknid er byrjunin á strengnum 
     * thad sem ég set innan sviga á eftir, er thad sem ég legg áherslu á í hverju sinni 
     * [A-Za-z0-9] eru leyfilegir stafir í fyrsta lid emailsins, sbr: (birgir09)dæ[email protected] 
     * + á milli táknar ad naesti svigi byrjar, thad er ad segja. (\\-[A-Za-z0-9-]) 
     * *@ táknar ad @ merkid er á milli sviganna 
     * "[A-Za-z0-9] er thad sem kemur fyrir framan punktinn sbr. (gmail).com 
     * (\\.[A-Za-z0-9]) er thad sem kemur fyrir aftan punkt sbr gmail.(com) 
     */ 
     Pattern p = Pattern.compile("^[A-Za-z0-9-]+(\\-[A-Za-z0-9])*@" 
       + "[A-Za-z0-9-]+(\\.[A-Za-z0-9])"); 
     Matcher m = p.matcher(mail); 

     if (m.find()) 
     { 
      System.out.println("Thetta email er loglegt."); 
     }else{ 
      System.out.println("Thetta email er ekki loglegt."); 
     } 



    } 
} 
+0

要验证电子邮件地址,你最好使用专用的API; javax.mail:mailapi似乎是你想要的在这里 – fge

+0

顺便说一句,我认为你需要编辑你的问题的标题。这只是关于邮件地址验证。 –

回答

0

你可以比较mail.indexOf("@")mail.lastIndexOf("@")回报。如果他们不同,那么这个角色会出现多次。

编辑:@fge的评论是非常真实的。如果您只需要电子邮件验证,那么最好使用特定的验证器,这将验证电子邮件的方式更彻底。

0

如果您所关心的是验证邮件,你可以申请一个正则表达式。这将检查@符号只出现一次。

Validate email with regular expression

+0

该网站有一些非常有用的信息,谢谢。要试着写一点代码,看看它是否适合我想要做的:) – Birgir

0

使用javax.mail API,你已经告诉过。

http://crunchify.com/how-to-validate-email-address-using-java-mail-api/

import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 

private boolean crunchifyEmailValidator(String email) { 
    boolean isValid = false; 
    try { 
     // 
     // Create InternetAddress object and validated the supplied 
     // address which is this case is an email address. 
     InternetAddress internetAddress = new InternetAddress(email); 
     internetAddress.validate(); 
     isValid = true; 
    } catch (AddressException e) { 
     System.out.println("You are in catch block -- Exception Occurred for: " + email); 
    } 
    return isValid; 
}