本來想搞一個用來判斷用戶輸入的字串是否符合要求的程式,要求是:1.第一個必須為大寫字母。2.必須包含5個數字。3.字串長度在6-16位之間 但是搞半天最后判斷長度的正則運算式不對頭,怎么搞都不符合要求,具體看圖,前面驗證大寫字母和5個數字的運算式測驗過沒問題,就是后面{5,15}這個問題大了,求大神指教

uj5u.com熱心網友回復:
字串長度在6-16位之間就是這樣寫^.{6,16}$
uj5u.com熱心網友回復:
String bds="^[A-Z]\\w*[0-9]{5,}+${5,15}";
uj5u.com熱心網友回復:
試了你這個,還是不行,輸入16位以上的字符也是驗證成功uj5u.com熱心網友回復:
我感覺需要雙重正則
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("驗證失敗");
}
}
uj5u.com熱心網友回復:
呵呵,其實這個還挺簡單的,當然會的話真的挺簡單的
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));
}
uj5u.com熱心網友回復:
試了你這個,還是不行,輸入16位以上的字符也是驗證成功
我感覺需要雙重正則
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("驗證失敗");
}
}
雙重想法不錯的。贊一個,可行,不過你這個要改下String bdt="\\w{5,16}"; 不然匹配16長度也失敗
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/192796.html
標籤:Java相關
