1、主要是验证用户界面输入信息是否合法
看效果图
很简单,熟悉基本的正则表达式用法就可,大部分时间都花在界面上了。
源码连接:http://download.youkuaiyun.com/detail/anlidengshiwei/8423187,地址点击打开链接
/*
要求:用Java代码做以下正则匹配,模拟用户注册时,验证填写信息的准确性
1、匹配邮箱
2、匹配手机号
3、匹配密码(6~12位之间,不能为纯数字)
4、匹配IP(IPv4)
题目分析:
1、匹配邮箱
总体标准:6~18个字符,可使用字母、数字、下划线,需以字母开头
个别邮箱长度不同,不作考虑。
*/
class RegexTools
{
/*
1、匹配邮箱
总体标准:6~18个字符,可使用字母、数字、下划线,需以字母开头
个别邮箱长度不同,不作考虑。
*/
public static boolean checkMail(String str)
{
if(str == null)return false;
String regex = "^[a-zA-Z](\\w|_){5,17}@\\w+\\.?\\w{2,3}$";
return str.matches(regex);
}
/*
2、匹配手机号
130-132、186是联通的,133和153、189是电信的,134-139、159、187、188是移动的
按照这个标准:
第一位:1
第二位:3、5、8
总长度:11位
*/
public static boolean checkTelphone(String str)
{
if(str == null)return false;
String regex = "^1[358]\\d{9}$";
return str.matches(regex);
}
/*
匹配密码,不能为纯数字,那么我们就采用取反的思路来做
*/
public static boolean checkPassWord(String str)
{
if(str == null)return false;
String regex = "^(\\d){6,12}$";
return !str.matches(regex);
}
/*
4、匹配ip
IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用
英文句点“.”隔开。
注意点:
1、前三段有.分割,最后一段没有
2、0-255的表示
*/
public static boolean checkIP4(String str)
{
if(str == null)return false;
String regex = "((2[0-4]\\d|25[0-5]|[01]?\\d?\\d)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d?\\d)$";
return str.matches(regex);
}
}
界面类:
import java.awt.Frame;
import java.awt.Button;
import java.awt.Label;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.TextField;
import javax.swing.JOptionPane;
class RegisterFrameDemo
{
public static void main(String[] args)
{
final RegisterFrame frame = new RegisterFrame();
ButtonClass btn = new ButtonClass(frame);
btn.create();
((Button)frame.getComponent(10)).addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String sName = ((TextField)frame.getComponent(5)).getText();
String sPwd = ((TextField)frame.getComponent(6)).getText();
String sMail = ((TextField)frame.getComponent(7)).getText();
String sTel = ((TextField)frame.getComponent(8)).getText();
String sIp = ((TextField)frame.getComponent(9)).getText();
JOptionPane.showMessageDialog(frame,sName + "信息中检测结果如下:\n" +
"密码是否合法:" + RegexTools.checkPassWord(sPwd) + "\n" +
"邮箱是否合法:" + RegexTools.checkMail(sMail) + "\n" +
"电话是否合法:" + RegexTools.checkTelphone(sTel) + "\n" +
"IP是否合法:" + RegexTools.checkIP4(sIp) + "\n");
}
});
((Button)frame.getComponent(11)).addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
((TextField)frame.getComponent(5)).setText("");
((TextField)frame.getComponent(6)).setText("");
((TextField)frame.getComponent(7)).setText("");
((TextField)frame.getComponent(8)).setText("");
((TextField)frame.getComponent(9)).setText("");
}
});
}
}
class RegisterFrame extends Frame
{
public RegisterFrame()
{
setTitle("用户注册");
setVisible(true);
Toolkit tl = Toolkit.getDefaultToolkit();
Dimension screenSize = tl.getScreenSize();
int width = screenSize.width;
int height =screenSize.height;
setSize(289,256);
setLocation(width/4,height/4);
this.addWindowListener(new FrameEvent());
this.setLayout(null);
this.setResizable(false);
this.repaint();
}
}
class FrameEvent extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}
class ButtonClass
{
private Frame frame;
public ButtonClass(Frame frame)
{
this.frame = frame;
}
public void create()
{
//创建控件
Label lblName = new Label("姓名:");
Label lblPwd = new Label("密码:");
Label lblMail = new Label("邮箱:");
Label lblTel = new Label("手机号码:");
Label lblIp = new Label("IP4地址:");
TextField txtName = new TextField();
TextField txtPwd = new TextField();
TextField txtMail = new TextField();
TextField txtTel = new TextField();
TextField txtIp = new TextField();
Button btnOk = new Button("确定");
Button btnCancel = new Button("重置");
//设置属性
lblName.setSize(53,12);
lblPwd.setSize(53,12);
lblMail.setSize(53,12);
lblTel.setSize(53,12);
lblIp.setSize(53,12);
txtName.setSize(157, 21);
txtPwd.setSize(157, 21);
txtMail.setSize(157, 21);
txtTel.setSize(157, 21);
txtIp.setSize(157, 21);
btnOk.setSize(75, 23);
btnCancel.setSize(75, 23);
lblName.setLocation(35,47);
lblPwd.setLocation(37, 81);
lblMail.setLocation(37, 112);
lblTel.setLocation(13, 147);
lblIp.setLocation(19, 176);
txtName.setLocation(93, 43);
txtPwd.setLocation(93, 75);
txtMail.setLocation(93, 107);
txtTel.setLocation(93, 139);
txtIp.setLocation(93, 171);
btnOk.setLocation(93, 209);
btnCancel.setLocation(175, 208);
//添加控件
this.frame.add(lblName);
this.frame.add(lblPwd);
this.frame.add(lblMail);
this.frame.add(lblTel);
this.frame.add(lblIp);
this.frame.add(txtName);
this.frame.add(txtPwd);
this.frame.add(txtMail);
this.frame.add(txtTel);
this.frame.add(txtIp);
this.frame.add(btnOk);
this.frame.add(btnCancel);
}
}
对话框提示:
你可以使用JOptionPane,它提供了showMessageDialog、showInputDialog、showOptionDialog、
showConfirmDialog来实现相应的各种功能的对话框。