如何在 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培训课程。