「_」キーは、どちらのA「#」またはAが含まれている必要があり、両方ではない:パスワードを検証し、ルールであるのいずれかを作ります

zimbabwetelevision:

私はパスワード/キーを検証するために満たされなければならないルールのセットとパスワード/キー検証を作っています。

鍵は少なくとも7つの文字で、20文字の長せいぜい、AND - -キーは特殊文字「#」または「で始めることはできません。これらのルールは以下のとおりである」と、 -キーはスペースがあってはなりません文字のどこでも、と-キーは、ユーザーの名前を含んではならない、と- -キーは、少なくとも一つのアッパーケース文字と少なくとも一つの低いケース文字、および持っている必要がありますキーは「#」または「のいずれかが含まれている必要があります」両方ではありません。

私は「キーは 『#』または 『_』、どちらか一方を含んでいなければならない。」最後のルール以外の仕事にすべてを取得するために管理しています

私は現在持っているコードは以下の通りです。私は、javaを学ぶに新しいですので、ご了承ください。

 * Asks user for key word and the name and then checks if it is a valid key word.
 */
public void doCompletion(){
    String key = UI.askString("Key:   ");
    String name = UI.askString("Your name:   ");
    this.validateKeyCompletion(key, name);
}

/** COMPLETION
 * Report that the key is valid or report ALL the rules that the key failed.
 */
public void validateKeyCompletion(String key, String name){
    /*# YOUR CODE HERE */
   int characterNumber = key.length();
   boolean hasUppercase;
   boolean hasLowercase;
   hasUppercase = !key.equals(key.toLowerCase());
   hasLowercase = !key.equals(key.toUpperCase());
   String specialChars = "(.*[ #  _  ].*)";
   if (characterNumber < 7 || characterNumber > 20){
    UI.println("Invalid: Key length must not be less than 7 or greater than 20");
   }
   else if (key.startsWith ("#") || (key.startsWith ("_"))){
    UI.println("Invalid: Key cannot start with '#' or '_'");
   } 
   else if (key.contains(" ")){
    UI.println("Invalid: Key cannot contain ' '");
   }
   else if(!hasUppercase)
   {
    UI.println("Invalid: Key must contain an uppercase character");
   }
   else if(!hasLowercase)
   {
    UI.println("Invalid: Key must contain a lowercase character");
   }
   else if(key.matches(name)){
    UI.println("Invalid: Key cannot contain Username");
   }
   else if(!key.matches(specialChars)){
    UI.println("Invalid: Key must contain either a '#' or a '_', but not both");
   } 
   else {
    UI.println("Valid");
   }


}
Garnik:

次の正規表現のチェックはキーが始まらない'#''_'、とその文字の一つではなく、両方が含まれています。

    if (!key.matches("^[^#_]+[#_]{1,1}[^#_]*")) {
        UI.println("Invalid: Key must contain either a '#' or a '_', but not both");
    }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=344072&siteId=1