正則 密碼 由數字和字母組成, 並且不能為純字母或純數字
阿新 • • 發佈:2019-02-12
密碼由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 |
0123match
false
0amatch
true
012aBcmatch
true
Abc0123 match
true
ab0123C match
true
012abc3match
true
0a1b2c3dmatch
true
match
false
abc match
false
012?&^match
false
abc&(match
false
&(*.match
false
www123
|
轉自:http://bbs.csdn.net/topics/390681908