大家好,又见面了,我是全栈君。
程序开发中常常须要用户输入用户信息或者联系方式,当中有一些数组的格式是固定的,程序处理逻辑也是依照这个格式来实现的,可是因为用户输入的是字符串,其灵活性较大,easy输入格式错误的数据。
比如。用户联系信息的电话号码就是固定格式的数据。本实例将演示怎样利用正則表達式来确定电话号码格式是否匹配,实例结果下图所看到的。在程序中增加该模块能够禁止用户输入错误的电话号码。
设计过程:
1)在项目中加入窗口类CheckPhoneNum。在该窗口类中加入3个文本框,分别用于输入姓名、年龄与电话号码,然后再加入一个“验证”button。
2)编写“验证”button的事件处理方法,该方法获取用户在文本框中输入的电话号码字符串,然后调用方法check()进行验证,并使用对话框输出验证结果。关键代码例如以下:
protected void do_button_actionPerformed(ActionEvent e) { String text = phoneNumField.getText();// 获取用户输入 String info = check(text);// 对输入文本进行IP验证 JOptionPane.showMessageDialog(null, info);// 用对话框输出验证结果 }
3)编写check()方法。该方法用于验证指定的字符串与正确的电话号码格式是否匹配。首先推断字符串是否为空,然后再通过正則表達式对字符串进行验证。并将验证结果作为方法的返回值。
关键代码例如以下:
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, 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, 141, 25); contentPane.add(phoneNumField); JLabel label_1 = new JLabel("\u5E74\u9F84\uFF1A"); label_1.setBounds(10, 50, 122, 15); contentPane.add(label_1); ageField = new JTextField(); ageField.setBounds(80, 45, 141, 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不是一个合法的电话号码!"; }}}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115410.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...