如何在 Java 中驗證電子郵件地址?
在本文中,我們將學習在Java編程語言中如何驗證電子郵件地址。我們將使用NetBeans IDE來編寫代碼并實現項目。
Java中的電子郵件驗證
電子郵件驗證是任何應用程序中注冊和登錄的重要且常見的部分。
電子郵件地址由三個部分組成:
- 本地部分:電子郵件地址的本地部分就像用戶的名稱。
- @符號:@符號是任何電子郵件地址的重要部分,如果沒有@符號,輸入的電子郵件地址將是無效的。
- 域名:域名是一個標識符字符串,用于識別互聯網上的管理自治和權威域。在網絡上下文中,域名用于特定應用程序的命名和地址。
注意:如今,當用戶在Android或IOS中下載任何應用程序時,該應用程序需要注冊用戶名、電子郵件地址、密碼及其他一些用戶信息。當我們向應用程序提供這些信息時,如果用戶未提供所需的信息,則無法完成注冊。
例如,當我們在任何設備上下載Gmail應用程序時,如果我們有一個電子郵件ID,那么我們將該電子郵件ID提供給應用程序。應用程序將驗證該電子郵件地址。如果存在,該設備將詢問密碼,但如果我們的電子郵件地址不存在,將會向用戶顯示錯誤消息,指出電子郵件地址不正確,無法完成Gmail登錄。
讓我們看一個在Java編程中驗證電子郵件地址的示例。對于這個示例,我們將使用NetBeans IDE。
步驟1
首先,我們將在NetBeans IDE中創建一個名為“EmailValidation”的項目。讓我們開始示例。
解釋
當我們打開NetBeans IDE進行項目時,第一頁將如下所示。我們將單擊“下一步”按鈕。
步驟2
當我們單擊“下一步”按鈕時,接下來我們將提供項目名稱“EmailValidation”。
解釋
在上面的圖像中,我們創建了名為“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設計。
解釋
在上面的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
完成代碼后,我們將右鍵單擊項目并選擇“運行”選項。運行后,結果如下所示:
解釋
在上面的圖片中,當我們運行項目時,應用程序將在屏幕上打開,樣子如下。現在我們需要在這里輸入電子郵件地址。輸入電子郵件地址后,我們將點擊按鈕。結果將顯示在按鈕下方的文本框中。
解釋
在上面的圖片中,我們輸入了一個不符合電子郵件格式的地址,因此當我們點擊檢查按鈕時,消息 \"電子郵件無效\" 將被打印到文本框中。
解釋
在上面的圖片中,我們看到輸入了一個符合電子郵件格式的地址。因此,當我們點擊按鈕時,消息 \"電子郵件有效\" 將顯示在文本框中。
注意:要運行此項目,您需要下載 NetBeans IDE。
總結
在本文中,我們學習了如何在Java編程語言中使用正則表達式驗證電子郵件地址。我們還創建了一個簡單的GUI程序,允許用戶輸入電子郵件地址并驗證其有效性。希望這篇文章對您有所幫助!
若你想提升Java技能,可關注我們的Java培訓課程。