正则 密码 由数字和字母组成, 并且不能为纯字母或纯数字

密码由6位以上的字母和数字组成, 至少包含一个字母和数字, 不能由纯数字或字母组成。并且不能为纯数字, 不能为纯字母, 必须包含一个字母和数字。

正则:

1
^ ( ? ! [ 0 - 9 ] + $ ) [ a - zA Z 9A - Za z ] { 6 , } $

分开来注释一下:
^匹配一行的开头位置
(?![0-9]+$)预测该位置后面不全是数字
(?![a-zA-Z]+$)预测该位置后面不全是字母
[0-9A-Za-z]{6,10}由6-10位数字或这字母组成
$匹配行结尾位置

测试代码

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
		/**
		 * 正则匹配: 由字母和数字组成,但不能为纯数字, 不能为纯字母。
		 * 
		 * 密码由6位以上的字母和数字组成, 至少包含一个字母和数字, 不能由纯数字或字母组成。
		 * 密码验证:"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$" 
		 * 
		 */
		Pattern pattern = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]+$");
		String[] test = new String[]{
				"0123","0a","012aBc","Abc0123","ab0123C","012abc3","0a1b2c3d",// 匹配数据
				"","abc","012?&^","abc&(","&(*.","www123   ","www 123" // 违规数据
				};
		
		for(String t : test){
			System.out.println(String.format("%s \t match %b",t,pattern.matcher(t).find()));
		}
		
	}

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0123 match false
0a true
012aBc true
Abc0123 true
ab0123C true
012abc3 true
0a1b2c3d true
false
abc false
012 & ^ false
abc & ( false
( * . false
www123 false
www 123 false

转自:http://bbs.csdn.net/topics/390681908

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...