验证非法电话号码

      程序开发中经常需要用户输入用户信息或者联系方式,其中有一些数组的格式是固定的,程序处理逻辑也是按照这个格式来实现的,但是由于用户输入的是字符串,其灵活性较大,容易输入格式错误的数据。

      例如,用户联系信息的电话号码就是固定格式的数据。本实例将演示如何利用正则表达式来确定电话号码格式是否匹配,实例结果下图所示。在程序中加入该模块可以禁止用户输入错误的电话号码。

设计过程:

    1)在项目中添加窗体类CheckPhoneNum。在该窗体类中添加3个文本框,分别用于输入姓名、年龄与电话号码,然后再添加一个“验证”按钮。
    2)编写“验证”按钮的事件处理方法,该方法获取用户在文本框中输入的电话号码字符串,然后调用方法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不是一个合法的电话号码!";
    }
}
}





 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值