java密码正则_java正则表达式密码程序

时间:2025-02-15 10:01:14

正则表达式

正则表达式是用来指定字符串模式的,可以方便的处理文本信息。当需要使一个字符串符合特定的字符串格式的时候,就需要使用正则表达式。例如:用户名、密码的格式,区号、电话号码所固有的格式等,都可以用正则表达式来检验是否符合格式要求。正则表达式中经常用到的语法表达式及用法见表15-10所示。

表15-10 NumberFormat类的主要方法及功能

字 符

用 法

[ ]

匹配的字符范围或列表

?

匹配单个字符

*

匹配任何位置

\t,\n,\r,\f,\a,\e

控制字符:制表符、换行符、回车符、换页符、警告符和转义符

^

“否”符号,如果用在方括号内,表示不想要匹配的字符

\d

一个数字字符[0~9]

\D

一个非数字字符[ ^0~9]

\s

一个空白字符[\t\n\r\f\x0B]

\S

一个非空白字符[^\t\n\r\f\x0B]

\w

一个单词字符,效果与[a-zA-Z0-9_]相同

\W

一个非单词字符,效果与[^a-zA-Z0-9_]相同

^$

输入的开始和结束位置

\b

字边界

\B

非字边界

续表

字 符

用 法

\A

输入的开始

\z

输入的结束

X?

字符X是可选的

X*

包含字符X有0个或多个

X+

包含字符X有1个或多个

X(n),X(n,),X(n,m)

分别为:n个字符X,至少n个字符X,n和m之间个字符X

XY

X中的任何字符串后面接着Y中任何字符串

X|Y

X或Y中任何字符串

代码15-10说明了正则表达式的使用。创建了一个用户名及密码输入窗口,使用正则表达式来检验,用户名字符串的输入必须是以字母开头,可以包含字母和数字;密码必须由字母和数字组成,必须含有至少一个字母和数字。同时用户名长度不得超过15个,密码长度不得少于4位,两次密码的输入必须完全一致。若输入错误,则会给出相应的错误显示。

代码15-10 正则表达式的使用

import .*;

import .*;

import .*;

public class ValidateFrame extends JFrame implements

ActionListener

{

private JTextField nameTextField;

private JPasswordField passwordTextField;

private JPasswordField confirmPswTextField;

JButton okButton;

JButton exitButton;

public

ValidateFrame() //构造方法

{

super("Validate");

//声明JLabel标签对象

JLabel name = new JLabel("Name");

JLabel password1 = new JLabel("Password");

JLabel password2 = new JLabel("Comfirm

Password");

//创建JButton对象okButton,并指定按钮上字符为"OK"

okButton = new JButton("OK");

exitButton = new JButton("EXIT");

//创建JButton对象exitButton,并指定按钮上字符为"OK"

(this);

//添加okButton事件监听器

(this);

//添加exitButton事件监听器

//以下用来创建窗口中字符串及密码输入栏

nameTextField = new JTextField(15);

passwordTextField = new JPasswordField(10);

confirmPswTextField = new JPasswordField(10);

//创建JPanel对象NamePanel面板,并在其中加入name标签及用户名输入栏

JPanel NamePanel = new JPanel();

(name);

(nameTextField);

//创建JPanel对象passwordPanel1面板,并在其中加入password1标签及密码输入栏

JPanel passwordPanel1 = new JPanel();

(password1);

(passwordTextField);

//创建JPanel对象passwordPanel1面板,并在其中加入password2标签及密码确认输入栏

JPanel passwordPanel2 = new JPanel();

(password2);

(confirmPswTextField);

//创建JPanel对象buttonPanel面板,并在该面板中加入2个按钮

JPanel buttonPanel = new JPanel();

(okButton);

(exitButton);

//创建并设置窗口布局方式为GridLayout

Container container = ();

(new GridLayout(4,1));

//以下四句将组件添加至窗口中

(NamePanel);

(passwordPanel1);

(passwordPanel2);

(buttonPanel);

setSize(325,225); //设置窗口大小

setVisible(true); //设置窗口为可见

}

public void actionPerformed(ActionEvent

e) //按钮事件处理方法

{ //处理按键的事件

if(() ==

okButton) //单击okButton时,程序所作的处理

{

validateDate(); //调用validateDate()方法

}

if(() ==

exitButton) //单击exitButton时,程序所作的处理

{

(false); //设置窗口为不可见

(0); //退出程序

}

}

private void validateDate()

{ //检验窗口输入栏中,用户输入的数据是否符合要求

if(().equals("")||

().equals("")||

().equals("")) // end of

condition

(this,"Please fill all fields");

//以上用来判断是否有输入栏为空

else

if(!().matches("[a-zA-Z][a-zA-Z0-9]*"))

(this,"Invalid name,the name must

begin with letter");

//以上用来判断,用户所输入的用户名是否以字母开头,是否由字母及数字组成

else if(().length()>15)

(this,"The name's length limit 15

letters");

//以上用来判断,用户输入的用户名,是否超过限定长度的15个字符

else

if(().length<4)

(this,"The password's length is too

short");

//以上用来判断,用户输入的密码长度是否少于4个字符

else if(!validatePassword())

(this,"The password must contain

letters and numbers");

//调用validatePassword()方法,用来判断用户输入的密码的格式是否符合要求,必须同时包含字

母和数字

else if(!compareTwoPassword())

(this,"The password input are not

same");

//调用compareTwoPassword()方法,用来判断用户两次输入的密码是否一致

else

(this,"All Data is OK!");

}

private boolean

validatePassword() //密码输入校验方法

{

boolean b = false;

String password = new String(());

//将字符数组()的内容,创建为字符串password

b = ("[a-zA-Z]+[0-9]+");

//使用正则表达式"[a-zA-Z]+[0-9]+"来判断密码password必须同时包含字母和数字

return b;

}

private boolean

compareTwoPassword() //两次输入密码核对方法

{

boolean b = false;

String password1 = new String(());

//将字符数组()的内容,创建为字符串password1

String password2 = new

String(());

//将字符数组()的内容,创建为字符串password2

if((password2))

b=true; //比较字符串

return

b; //返回布尔型变量的值

}

public static void main(String[] args)

{

ValidateFrame validateFrame = new ValidateFrame();

(JFrame.EXIT_ON_CLOSE);

}

}