密码由6位以上的字母和数字组成, 至少包含一个字母和数字, 不能由纯数字或字母组成。并且不能为纯数字, 不能为纯字母, 必须包含一个字母和数字。
正则:
1
|
^
(
?
!
[
0
-
9
]
+
$
)
(
?
!
[
a
-
zA
-
Z
]
+
$
)
[
0
-
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
match
true
012aBc
match
true
Abc0123
match
true
ab0123C
match
true
012abc3
match
true
0a1b2c3d
match
true
match
false
abc
match
false
012
?
&
^
match
false
abc
&
(
match
false
&
(
*
.
match
false
www123
match
false
www
123
match
false
|
转自:http://bbs.csdn.net/topics/390681908