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

密码由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

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...