如何在 Java 中驗(yàn)證電子郵件地址?

在本文中,我們將學(xué)習(xí)在Java編程語言中如何驗(yàn)證電子郵件地址。我們將使用NetBeans IDE來編寫代碼并實(shí)現(xiàn)項(xiàng)目。

Java中的電子郵件驗(yàn)證

電子郵件驗(yàn)證是任何應(yīng)用程序中注冊和登錄的重要且常見的部分。

電子郵件地址由三個(gè)部分組成:

  • 本地部分:電子郵件地址的本地部分就像用戶的名稱。
  • @符號:@符號是任何電子郵件地址的重要部分,如果沒有@符號,輸入的電子郵件地址將是無效的。
  • 域名:域名是一個(gè)標(biāo)識符字符串,用于識別互聯(lián)網(wǎng)上的管理自治和權(quán)威域。在網(wǎng)絡(luò)上下文中,域名用于特定應(yīng)用程序的命名和地址。

注意:如今,當(dāng)用戶在Android或IOS中下載任何應(yīng)用程序時(shí),該應(yīng)用程序需要注冊用戶名、電子郵件地址、密碼及其他一些用戶信息。當(dāng)我們向應(yīng)用程序提供這些信息時(shí),如果用戶未提供所需的信息,則無法完成注冊。

例如,當(dāng)我們在任何設(shè)備上下載Gmail應(yīng)用程序時(shí),如果我們有一個(gè)電子郵件ID,那么我們將該電子郵件ID提供給應(yīng)用程序。應(yīng)用程序?qū)Ⅱ?yàn)證該電子郵件地址。如果存在,該設(shè)備將詢問密碼,但如果我們的電子郵件地址不存在,將會向用戶顯示錯(cuò)誤消息,指出電子郵件地址不正確,無法完成Gmail登錄。

讓我們看一個(gè)在Java編程中驗(yàn)證電子郵件地址的示例。對于這個(gè)示例,我們將使用NetBeans IDE。

步驟1

首先,我們將在NetBeans IDE中創(chuàng)建一個(gè)名為“EmailValidation”的項(xiàng)目。讓我們開始示例。

Image1.PNG

解釋

當(dāng)我們打開NetBeans IDE進(jìn)行項(xiàng)目時(shí),第一頁將如下所示。我們將單擊“下一步”按鈕。

步驟2

當(dāng)我們單擊“下一步”按鈕時(shí),接下來我們將提供項(xiàng)目名稱“EmailValidation”。

Image2.PNG

解釋

在上面的圖像中,我們創(chuàng)建了名為“MailValidation”的項(xiàng)目并單擊“完成”按鈕。

步驟3

現(xiàn)在在我們的項(xiàng)目中,我們將創(chuàng)建一個(gè)名為“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);
    }
}

解釋

在上述代碼示例中,首先我們創(chuàng)建一個(gè)名為“isValid”的方法。在該方法中,我們定義電子郵件地址的格式。然后創(chuàng)建Pattern類的對象以編譯電子郵件格式,并使用“if-else語句”判斷電子郵件是否為null,如果是,則輸出為null,但如果編譯器找到電子郵件。

步驟4

現(xiàn)在我們將為GUI(圖形用戶界面)創(chuàng)建一個(gè)JFrame表單,名為“EmailGui.java”。讓我們看一下我們項(xiàng)目的GUI設(shè)計(jì)。

Image3.PNG

解釋

在上面的GUI中,我們創(chuàng)建了一個(gè)“標(biāo)簽”用于打印標(biāo)題,第二個(gè)“標(biāo)簽”用于打印提示用戶“輸入您的電子郵件”的消息,還有一個(gè)“文本框”用于用戶輸入電子郵件。在標(biāo)簽下方,我們創(chuàng)建了一個(gè)名為“點(diǎn)擊”的按鈕,最后我們有一個(gè)“文本區(qū)域”。我們使用“拖放”技術(shù)創(chuàng)建了這個(gè)GUI表單。

步驟5

現(xiàn)在我們將更新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 {
    /**
     * 創(chuàng)建新表單EmailGui
     */
    public EmailGui() {
        initComponents();
    }
    /**
     * 該方法在構(gòu)造函數(shù)中調(diào)用以初始化表單。
     * 警告:請勿修改此代碼。該方法的內(nèi)容始終
     * 由表單編輯器重新生成。
     */
    @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
}

解釋

在上述代碼中,首先我們創(chuàng)建一個(gè)名為“checkButtonMouseClicked”的方法,該方法將會在用戶單擊“檢查”按鈕時(shí)被調(diào)用。在該方法中,我們首先獲取輸入的電子郵件地址,然后使用“EmailValidation.isValid”方法檢查電子郵件地址的有效性,并根據(jù)結(jié)果在“finalResult”文本區(qū)域中輸出相應(yīng)的信息。

步驟6

完成代碼后,我們將右鍵單擊項(xiàng)目并選擇“運(yùn)行”選項(xiàng)。運(yùn)行后,結(jié)果如下所示:

Image4.PNG

解釋  


在上面的圖片中,當(dāng)我們運(yùn)行項(xiàng)目時(shí),應(yīng)用程序?qū)⒃谄聊簧洗蜷_,樣子如下。現(xiàn)在我們需要在這里輸入電子郵件地址。輸入電子郵件地址后,我們將點(diǎn)擊按鈕。結(jié)果將顯示在按鈕下方的文本框中。

Image5.PNG

解釋  


在上面的圖片中,我們輸入了一個(gè)不符合電子郵件格式的地址,因此當(dāng)我們點(diǎn)擊檢查按鈕時(shí),消息 \"電子郵件無效\" 將被打印到文本框中。

Image6.PNG

解釋  


在上面的圖片中,我們看到輸入了一個(gè)符合電子郵件格式的地址。因此,當(dāng)我們點(diǎn)擊按鈕時(shí),消息 \"電子郵件有效\" 將顯示在文本框中。

注意:要運(yùn)行此項(xiàng)目,您需要下載 NetBeans IDE。  

總結(jié)

在本文中,我們學(xué)習(xí)了如何在Java編程語言中使用正則表達(dá)式驗(yàn)證電子郵件地址。我們還創(chuàng)建了一個(gè)簡單的GUI程序,允許用戶輸入電子郵件地址并驗(yàn)證其有效性。希望這篇文章對您有所幫助!

 

若你想提升Java技能,可關(guān)注我們的Java培訓(xùn)課程。