快乐生活 !
posted on 2009-07-22 22:16 advincenting 阅读(1450) 评论(11) 编辑 收藏
import java.util.regex.Matcher;import java.util.regex.Pattern;public class PasswordTest { private final static Matcher passwordMatcher = Pattern.compile( "^(?:([a-z])|([A-Z])|([0-9])|([@#$%])){8,15}$" ).matcher(""); public static void main(String[] args) { String[] strs = { "abcdefg12345", "aaabbbAAA$$$", "aaabbbAAAa@13434", "aaAA11", "AAAaaa113@" }; for(int i = 0; i < strs.length; i++) { System.out.printf("str: %-20s length: %2d result: %s%n", strs[i], strs[i].length(), checkPassword(strs[i]) ); } } public static boolean checkPassword(String password) { if (password == null) { return false; } passwordMatcher.reset(password); if (!passwordMatcher.matches()) { return false; } int count = 0; for (int i = passwordMatcher.groupCount(); i > 0; i--) { if (passwordMatcher.start(i) > -1) { count++; } } return (count >= 3); }}
长度Check: [a-zA-Z0-9@#$%]{8,15}有效性Check: ([a-z]+[A-Z]+[0-9]+)| ([A-Z]+[0-9]+[@#$%]+)| ([a-z]+[0-9]+[@#$%]+)| ([a-z]+[A-Z]+[@#$%]+)使用前请好好测试一下儿! 回复 更多评论
@菜菜宝宝aaaZXXXXCCCC好像这个字符串也可以被匹配上吧!这和LZ的要求不太符合! 回复 更多评论
@游客您好,aaaZXXXXCCCC 这个的匹配结果返回的是 false 啊。 回复 更多评论
菜菜宝宝 不错! 回复 更多评论
还在后台判断?为什么不在前台判断呢? 回复 更多评论
@菜菜宝宝赞,学习 回复 更多评论
^((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[@#$%])|(?=.*\d)(?=.*[a-z])(?=.*[@#$%])|(?=.*[A-Z])(?=.*[a-z])(?=.*[@#$%]))[0-9a-zA-Z@#$%]{8,15}$ 回复 更多评论
当作是复习一下正则. 回复 更多评论
@菜菜宝宝 999999@LLL 不匹配 回复 更多评论
@xing.liu@菜菜宝宝999999@LLL 不匹配----------------------------------999999@LLL 我测试的结果是 true 啊?符合博主的要求。 回复 更多评论