2016-10-21 7 views
-2

次の条件に一致するように正規表現コードを作成しようとしていますが、これまで不可能でした。パスワード基準の正規表現コードを書くには?

  • 少なくとも2大文字
  • 少なくとも2小文字
  • 少なくとも一つの番号。ここで

私のコードです:私は長さ

if (String.valueOf(string1).length() <= 8){j =0;}  
    if (!string1.matches("[A-Za-z0-9]*")){j =0;} 

.INT jについてチェックするためにこれらの2式を用いてきた瞬間に は、条件が満たされたかどうかを確認するために使用する変数イムです!

+3

まだ試しましたか?正規表現の参照にはどのサイトを使用していますか? – VGR

+0

^あなたの質問に追加してください。 – halfer

+0

^それをあなたの質問に「コードフォーマットを使用して」追加してから、それをさらに下降させてください。 – halfer

答えて

0

まあ、私はそれについて移動する非正規表現の方法を参照してください。あなたがしたい場合は、機能インタフェースを使用して、早期終了述語抽象

public boolean isValidPassword(String s) { 
    int lowerCase = 0; 
    int upperCase = 0; 
    int numeric = 0; 
    int special = 0; 
    for (int c = 0; i < s.length(); i++) { 
     char i = s.charAt(c); 
     if (i >= 'A' && i <= 'Z') { 
      upperCase++; 
     } else if (i >= 'a' && i <= 'z') { 
      lowerCase++; 
     } else if (i >= '0' && i <= '9') { 
      numeric++; 
     } else { 
      special++; 
     } 
     //early ending case 
     return lowerCase > 1 && upperCase > 1 && numeric > 0; 
    } 
    return false; 
} 

をできます

@FunctionalInterface 
private static interface PasswordMatch { 
    public boolean match(int lowerCase, int upperCase, int numbers, int special); 
} 

public boolean isValidPassword(String s, PasswordMatch matcher) { 
    //... 
     //in loop 
     if (matcher.match(lowerCase, upperCase, numeric, special) { 
      return true; 
     } 
    //... 
} 

このようにすること状況に応じて電話をかけてください:

if (isValidPassword(/* some pass */, (lower, upper, number, spec) 
       -> lowerCase > 1 && upperCase > 1 && numeric > 0)) { 
    //etc... 
} 
関連する問題