如何在 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)目。讓我們開始示例。
解釋
當(dāng)我們打開NetBeans IDE進(jìn)行項(xiàng)目時(shí),第一頁將如下所示。我們將單擊“下一步”按鈕。
步驟2
當(dāng)我們單擊“下一步”按鈕時(shí),接下來我們將提供項(xiàng)目名稱“EmailValidation”。
解釋
在上面的圖像中,我們創(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ì)。
解釋
在上面的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é)果如下所示:
解釋
在上面的圖片中,當(dāng)我們運(yùn)行項(xiàng)目時(shí),應(yīng)用程序?qū)⒃谄聊簧洗蜷_,樣子如下。現(xiàn)在我們需要在這里輸入電子郵件地址。輸入電子郵件地址后,我們將點(diǎn)擊按鈕。結(jié)果將顯示在按鈕下方的文本框中。
解釋
在上面的圖片中,我們輸入了一個(gè)不符合電子郵件格式的地址,因此當(dāng)我們點(diǎn)擊檢查按鈕時(shí),消息 \"電子郵件無效\" 將被打印到文本框中。
解釋
在上面的圖片中,我們看到輸入了一個(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)課程。