51,411
社区成员
发帖
与我相关
我的任务
分享


Scanner in=new Scanner(System.in);
String bds="^[A-Z]\\w*[0-9]{5,}\\w*";
String bdt="\\w{5,15}";
while(true) {
String c=in.nextLine();
if(c.matches(bds)&&c.matches(bdt)) {
System.out.println("验证成功");
}else {
System.out.println("验证失败");
}
}
Scanner in=new Scanner(System.in);
String bds="^[A-Z]\\w*[0-9]{5,}\\w*";
String bdt="\\w{5,15}";
while(true) {
String c=in.nextLine();
if(c.matches(bds)&&c.matches(bdt)) {
System.out.println("验证成功");
}else {
System.out.println("验证失败");
}
}
[/quote]
双重想法不错的。赞一个,可行,不过你这个要改下String bdt="\\w{5,16}"; 不然匹配16长度也失败
String regx = "^[A-Z]((?=(.*\\d){5})([a-zA-Z\\d]){5,15})$";
String[] testData = {
"1234567890", //全数字
"AbcdEFGhij", //全字母
"ABcd12", //数字不够5位
"12345A", //非大写字母开头
"A12345", //OK,满6位
"AB1cd2EF3gh4IJ5", //OK不满16位,至少5个数字,大写字母开头
"A123456789012345", //OK满16位,至少5个数字,大写字母开头
"Aabcdefg12345abc", //OK满16位,至少5个数字,大写字母开头
"AB1cd2EF3gh4IJ5k6" //17位
};
for (String s : testData) {
System.out.printf("%s: %s\n", s, s.matches(regx));
}