【问题标题】:Mail address validation JAVA邮件地址验证JAVA
【发布时间】:2014-05-11 21:57:20
【问题描述】:

我正在尝试编写一个小程序,要求用户输入电子邮件地址。然后我验证它是否是有效的电子邮件地址。比如 "example@example.com" 是有效的,但 "example@@example.com.org" 是无效的。

这是我的代码,我可以检测是否有 @ 和 .字符,但我需要确保它只出现一次,并且 @ 出现在点 (.) 之前

 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æmi@gmail.com
         * + á 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.");
        }



    }
}

【问题讨论】:

  • 要验证电子邮件地址,您最好使用专用 API; javax.mail:mailapi 似乎是你想要的
  • 顺便说一句,我认为您需要编辑问题的标题。这只是关于邮件地址验证。

标签: java validation boolean character detection


【解决方案1】:

使用 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;
}

【讨论】:

    【解决方案2】:

    这里有一个用于验证邮件地址的正则表达式:

    Java regex email

    【讨论】:

    • 谢谢,觉得这很有帮助
    【解决方案3】:

    您可以比较mail.indexOf("@")mail.lastIndexOf("@") 的返回值。如果它们不同,那么这个角色会出现多次。

    EDIT :@fge 评论非常真实。如果您只需要电子邮件验证,最好使用特定的验证器,它会更彻底地验证电子邮件。

    【讨论】:

      【解决方案4】:

      如果您只关心验证电子邮件,则可以应用正则表达式。这将检查 @ 符号是否只出现一次。

      Validate email with regular expression

      【讨论】:

      • 该网站有一些非常有用的信息,谢谢。将尝试围绕它编写一些代码,看看它是否适合我正在尝试做的事情:)
      猜你喜欢
      • 2011-11-02
      • 2012-10-16
      • 2011-06-08
      • 2014-06-12
      • 1970-01-01
      • 2019-09-17
      • 2017-10-19
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多