如何在 Java 中验证电子邮件地址?

在本文中,我们将学习在Java编程语言中如何验证电子邮件地址。我们将使用NetBeans IDE来编写代码并实现项目。

Java中的电子邮件验证

电子邮件验证是任何应用程序中注册和登录的重要且常见的部分。

电子邮件地址由三个部分组成:

  • 本地部分:电子邮件地址的本地部分就像用户的名称。
  • @符号:@符号是任何电子邮件地址的重要部分,如果没有@符号,输入的电子邮件地址将是无效的。
  • 域名:域名是一个标识符字符串,用于识别互联网上的管理自治和权威域。在网络上下文中,域名用于特定应用程序的命名和地址。

注意:如今,当用户在Android或IOS中下载任何应用程序时,该应用程序需要注册用户名、电子邮件地址、密码及其他一些用户信息。当我们向应用程序提供这些信息时,如果用户未提供所需的信息,则无法完成注册。

例如,当我们在任何设备上下载Gmail应用程序时,如果我们有一个电子邮件ID,那么我们将该电子邮件ID提供给应用程序。应用程序将验证该电子邮件地址。如果存在,该设备将询问密码,但如果我们的电子邮件地址不存在,将会向用户显示错误消息,指出电子邮件地址不正确,无法完成Gmail登录。

让我们看一个在Java编程中验证电子邮件地址的示例。对于这个示例,我们将使用NetBeans IDE。

步骤1

首先,我们将在NetBeans IDE中创建一个名为“EmailValidation”的项目。让我们开始示例。

Image1.PNG

解释

当我们打开NetBeans IDE进行项目时,第一页将如下所示。我们将单击“下一步”按钮。

步骤2

当我们单击“下一步”按钮时,接下来我们将提供项目名称“EmailValidation”。

Image2.PNG

解释

在上面的图像中,我们创建了名为“MailValidation”的项目并单击“完成”按钮。

步骤3

现在在我们的项目中,我们将创建一个名为“EmailValidation.java”的主Java类文件。该文件的代码如下所示。

import java.util.regex.Pattern;
public class EmailValidation {
    public static boolean isValid(String email) {
        String emailFormat = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\\\."
                + "[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$";
        Pattern p = Pattern.compile(emailFormat);
        if (email == null) {
            return false;
        }
        return p.matcher(email).matches();
    }
    public static void main(String[] args) {
        EmailGui frame = new EmailGui();
        frame.setVisible(true);
    }
}

解释

在上述代码示例中,首先我们创建一个名为“isValid”的方法。在该方法中,我们定义电子邮件地址的格式。然后创建Pattern类的对象以编译电子邮件格式,并使用“if-else语句”判断电子邮件是否为null,如果是,则输出为null,但如果编译器找到电子邮件。

步骤4

现在我们将为GUI(图形用户界面)创建一个JFrame表单,名为“EmailGui.java”。让我们看一下我们项目的GUI设计。

Image3.PNG

解释

在上面的GUI中,我们创建了一个“标签”用于打印标题,第二个“标签”用于打印提示用户“输入您的电子邮件”的消息,还有一个“文本框”用于用户输入电子邮件。在标签下方,我们创建了一个名为“点击”的按钮,最后我们有一个“文本区域”。我们使用“拖放”技术创建了这个GUI表单。

步骤5

现在我们将更新GUI的编码部分。该文件的代码如下所示。

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author SYSADMIN
 */
public class EmailGui extends javax.swing.JFrame {
    /**
     * 创建新表单EmailGui
     */
    public EmailGui() {
        initComponents();
    }
    /**
     * 该方法在构造函数中调用以初始化表单。
     * 警告:请勿修改此代码。该方法的内容始终
     * 由表单编辑器重新生成。
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTextArea3 = new javax.swing.JTextArea();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        checkButton = new javax.swing.JButton();
        jScrollPane4 = new javax.swing.JScrollPane();
        finalResult = new javax.swing.JTextArea();
        inputEmail = new javax.swing.JTextField();
        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);
        jTextArea3.setColumns(20);
        jTextArea3.setRows(5);
        jScrollPane3.setViewportView(jTextArea3);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setText("EmailValid");
        jLabel2.setText("输入您的电子邮件");
        checkButton.setText("检查");
        checkButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                checkButtonMouseClicked(evt);
            }
        });
        finalResult.setColumns(20);
        finalResult.setRows(5);
        jScrollPane4.setViewportView(finalResult);
        inputEmail.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                inputEmailActionPerformed(evt);
            }
        });
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(105, 105, 105)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(checkButton, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(104, 104, 104)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(inputEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(107, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(31, 31, 31)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(inputEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(34, 34, 34)
                .addComponent(checkButton)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(42, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>
    private void inputEmailActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
    private void checkButtonMouseClicked(java.awt.event.MouseEvent evt) {
        String email = inputEmail.getText();
        if (EmailValidation.isValid(email)) {
            finalResult.setText(email + " 是有效的电子邮件地址。");
        } else {
            finalResult.setText(email + " 不是有效的电子邮件地址。");
        }
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorials/swing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(EmailGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(EmailGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(EmailGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(EmailGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EmailGui().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton checkButton;
    private javax.swing.JTextArea finalResult;
    private javax.swing.JTextField inputEmail;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea3;
    // End of variables declaration
}

解释

在上述代码中,首先我们创建一个名为“checkButtonMouseClicked”的方法,该方法将会在用户单击“检查”按钮时被调用。在该方法中,我们首先获取输入的电子邮件地址,然后使用“EmailValidation.isValid”方法检查电子邮件地址的有效性,并根据结果在“finalResult”文本区域中输出相应的信息。

步骤6

完成代码后,我们将右键单击项目并选择“运行”选项。运行后,结果如下所示:

Image4.PNG

解释  


在上面的图片中,当我们运行项目时,应用程序将在屏幕上打开,样子如下。现在我们需要在这里输入电子邮件地址。输入电子邮件地址后,我们将点击按钮。结果将显示在按钮下方的文本框中。

Image5.PNG

解释  


在上面的图片中,我们输入了一个不符合电子邮件格式的地址,因此当我们点击检查按钮时,消息 \"电子邮件无效\" 将被打印到文本框中。

Image6.PNG

解释  


在上面的图片中,我们看到输入了一个符合电子邮件格式的地址。因此,当我们点击按钮时,消息 \"电子邮件有效\" 将显示在文本框中。

注意:要运行此项目,您需要下载 NetBeans IDE。  

总结

在本文中,我们学习了如何在Java编程语言中使用正则表达式验证电子邮件地址。我们还创建了一个简单的GUI程序,允许用户输入电子邮件地址并验证其有效性。希望这篇文章对您有所帮助!

 

若你想提升Java技能,可关注我们的Java培训课程。