Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

validando senhas

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Principal {
    public static void main(String[] args) {


        Scanner scanner = new Scanner(System.in);
        System.out.println("digite sua senha: ");
        String senha=scanner.nextLine();
        Pattern pattern1=Pattern.compile("[A-Z]");
        Pattern pattern2=Pattern.compile("[a-z]");
        Pattern pattern3=Pattern.compile("\\d");
        Pattern pattern4=Pattern.compile("[^a-zA-Z\\d\\s]");
        Matcher maiusculo=pattern1.matcher(senha);
        Matcher minusuculo=pattern2.matcher(senha);
        Matcher numero=pattern3.matcher(senha);
        Matcher caractere=pattern4.matcher(senha);
        if(maiusculo.find() && minusuculo.find() && numero.find() && caractere.find() && senha.length()>=8){
            System.out.println("Senha valida!");
        }
        else{
            System.out.println("senha invalida!");
        }


    }

}
1 resposta

Oi, Felipe. Tudo bem com você?

Obrigado por compartilhar a sua resolução da atividade. O código atende aos requisitos propostos para validar senhas utilizando expressões regulares. A separação das verificações em diferentes objetos Pattern e Matcher torna a lógica fácil de entender, permitindo validar de forma independente a presença de letras maiúsculas, letras minúsculas, números, caracteres especiais e o tamanho mínimo da senha. Essa abordagem também facilita futuras alterações, caso novos critérios sejam adicionados.

Como sugestão, existe a possibilidade de concentrar todas as validações em uma única expressão regular, utilizando uma regex com lookaheads. No entanto, a solução que você escolheu é bastante legível e costuma ser uma boa alternativa para quem está aprendendo Regex. Por exemplo, ao testar senhas como Senha123!, todas as condições são satisfeitas e a validação retorna sucesso. Já entradas como senha123 ou Senha123 deixam de atender um ou mais critérios, resultando na mensagem de senha inválida, conforme esperado.

Pensando em uma aplicação real, como você adaptaria essa validação para informar ao usuário exatamente qual requisito da senha não foi atendido, em vez de exibir apenas uma mensagem genérica?

Parabéns pela implementação e por compartilhar sua solução. Continue praticando e conte com o fórum sempre que surgir alguma dúvida.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!