程序开发中经常需要用户输入用户信息或者联系方式,其中有一些数组的格式是固定的,程序处理逻辑也是按照这个格式来实现的,但是由于用户输入的是字符串,其灵活性较大,容易输入格式错误的数据。
例如,用户联系信息的电话号码就是固定格式的数据。本实例将演示如何利用正则表达式来确定电话号码格式是否匹配,实例结果下图所示。在程序中加入该模块可以禁止用户输入错误的电话号码。
设计过程:
1)在项目中添加窗体类CheckPhoneNum。在该窗体类中添加3个文本框,分别用于输入姓名、年龄与电话号码,然后再添加一个“验证”按钮。@H_301_15@ 2)编写“验证”按钮的事件处理方法,该方法获取用户在文本框中输入的电话号码字符串,然后调用方法check()进行验证,并使用对话框输出验证结果。关键代码如下:
protected void do_button_actionPerformed(ActionEvent e) { String text = phoneNumField.getText();// 获取用户输入 String info = check(text);// 对输入文本进行IP验证 JOptionPane.showMessageDialog(null,info);// 用对话框输出验证结果 }3)编写check()方法,该方法用于验证指定的字符串与正确的电话号码格式是否匹配。首先判断字符串是否为空,然后再通过正则表达式对字符串进行验证,并将验证结果作为方法的返回值。关键代码如下: @H_301_15@
private String check(String text) { if(text == null || text.isEmpty()){ return "请输入电话号码!"; } //定义正则表达式,前3后8,或者前4后8 //例如“027-16816816、0431-12312345”都是合法的电话号码 String regex = "^\\d{3}-?\\d{8}|\\d{4}-?\\d{8}$"; //判断是否为电话号码 if(text.matches(regex)){ return text+"\n是一个合法的电话号码。"; }else{ return text+"\n不是一个合法的电话号码!"; } }
完整代码如下:
package com.lzw; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class CheckPhoneNum extends JFrame { private JPanel contentPane; private JTextField nameField; private JTextField phoneNumField; private JTextField ageField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { CheckPhoneNum frame = new CheckPhoneNum(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public CheckPhoneNum() { setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,260,190); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5,5,5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblip = new JLabel("\u59D3\u540D\uFF1A"); lblip.setBounds(10,15,122,15); contentPane.add(lblip); nameField = new JTextField(); nameField.setBounds(80,10,141,25); contentPane.add(nameField); JButton button = new JButton("\u9A8C\u8BC1"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { do_button_actionPerformed(e); } }); button.setBounds(90,119,93,23); contentPane.add(button); JLabel label = new JLabel("\u7535\u8BDD\u53F7\u7801\uFF1A"); label.setBounds(10,87,60,15); contentPane.add(label); phoneNumField = new JTextField(); phoneNumField.setBounds(80,82,25); contentPane.add(phoneNumField); JLabel label_1 = new JLabel("\u5E74\u9F84\uFF1A"); label_1.setBounds(10,50,15); contentPane.add(label_1); ageField = new JTextField(); ageField.setBounds(80,45,25); contentPane.add(ageField); } protected void do_button_actionPerformed(ActionEvent e) { String text = phoneNumField.getText();// 获取用户输入 String info = check(text);// 对输入文本进行IP验证 JOptionPane.showMessageDialog(null,info);// 用对话框输出验证结果 } public String check(String text){ if(text == null || text.isEmpty()){ return "请输入电话号码!"; } // 定义正则表达式 String regex = "^\\d{3}-?\\d{8}|\\d{4}-?\\d{8}$"; // 判断输入数据是否为电话号码 if(text.matches(regex)){ return text + "\n是一个合法的电话号码!"; }else{ return text + "\n不是一个合法的电话号码!"; } } }