密码由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())); } }
输出结果:
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