galera eu quero validar a senha que o usuario informa da seguinte maneira, ela tem que ter letras , numeros e caracteres especias fiz a seguinte expresao regular
"[a-zA-Z]+[0-9]+[\\p{Punct}]+"
mas ela so ira validar se os caracteres estiverem nessa sequencia
entaum como eu faria para validar os caracteres em qualquer sequencia ?
tentei o seguitne
("[a-zA-Z0-9\\p{Punct}]+
mas neste casso valores sem caracteres especiais foram validados, alguem sabe aonde eu errei ?
O operador que eu usei não funciona da maneira que você está acostumado.
Ele valida se existe o padrão pedido, porém não consome nenhum caractere na leitura, ele não avança o índice. por isso eu coloco os quantificadores atrás e na frente do padrão, para verificar se ele existe em qualquer lugar do texto.
Você não vai conseguir fazer o que quer somente utilizando isso. validar usando o length como você disse é uma solução muito mais simples
De modo geral, se seu problema exige, para ser resolvido, desse operador “(?=” ou “(?<” ou coisa parecida (back-reference), é sinal que ele pode ser resolvido, de forma mais clara, combinando-se várias expressões regulares, em vez de tentar resolver com uma única expressão regular.