`` `regex
^(? =.*[a-za-z]) (? =.*\ d) (? =.*[!@#$%^&*() ,.? ":{} | <> \ -_+=\\` ~; ']). {8,} $
`` `
Explicação: * `^`:Corresponde ao início da string.
* `(? =.* [a-za-z])`:afirmação positiva de loteahead que requer pelo menos uma letra (A-Z ou A-Z).
* `(? =.* \ d)`:afirmação positiva de loteahead que requer pelo menos um dígito (0-9).
*`(? =.*[!@#$%^&*(),. Escape de caracteres especiais dentro da classe de caracteres (por exemplo, `` `e` ``).
* `. {8,}`:corresponde a qualquer caractere (exceto newline) pelo menos 8 vezes. Isso garante o comprimento mínimo.
* `$`:Corresponde ao final da string.
Como usá -lo em diferentes contextos: *
javascript: `` `JavaScript
const passwordRegex =/^(?=.**-ZA-Z ])(?
const senha ="myp@ssword123";
const isValid =senhaRegex.test (senha);
console.log (isValid); // saída:true
const invalidpassword ="Short1!";
const isInValid =senhaRegex.test (invalidpassword);
console.log (isInValid); // saída:false
`` `
*
python: `` `Python
importar re
Password_regex =r "^(? =.*[a-za-z]) (? =.*\ d) (? =.*[!@#$%^&*() ,.? \":{} | <> \ -_+=\\ `; ']). {8,} $"
senha ="myp@ssword123"
is_valid =re.match (senha_regex, senha)
Imprimir (bool (is_valid)) # saída:true
invalid_password ="curto1!"
is_invalid =re.match (senha_regex, invalid_password)
Imprimir (bool (is_invalid)) # saída:false
`` `
*
java: `` `Java
importar java.util.regex.matcher;
importar java.util.regex.pattern;
classe pública PasswordValidator {
public static void main (string [] args) {
String senha-segex ="^(? =.*[A-za-z]) (? =.
String senha ="myp@ssword123";
Padrão padrão =padrão.compile (senhaRegex);
Matcher Matchaer =Pattern.Matcher (Senha);
System.out.println (matcher.matches ()); // saída:true
String invalidpassword ="short1!";
matcher =Pattern.Matcher (invalidPassword);
System.out.println (matcher.matches ()); // saída:false
}
}
`` `
Considerações e personalização importantes: *
caracteres especiais: A parte mais crítica é definir os caracteres especiais permitidos. O `[!@#$%^&*() ,.?":{} | <> \ -_+=\\ `~; ']` parte do regex define quais caracteres são considerados "especiais". Examine e modifique cuidadosamente isso para atender aos seus requisitos específicos. Lembre-se de escapar de caracteres regex especiais.
*
Conjuntos de caracteres: * `[a-za-z]`:corresponde a qualquer letra em maiúsculas ou minúsculas. Você pode restringir isso apenas a letras minúsculas ou apenas maiúsculas, se necessário.
* `\ d`:corresponde a qualquer dígito (0-9).
*
Comprimento mínimo: A parte `{8,}` especifica um comprimento mínimo de 8 caracteres. Altere o `8 'para ajustar o comprimento mínimo. Se você também deseja um comprimento máximo, pode especificar assim:`{8,16}` por um mínimo de 8 e um máximo de 16 caracteres.
* Requisitos de complexidade
: Você pode adicionar mais requisitos de complexidade adicionando mais afirmações LookaHead. Por exemplo, você pode exigir pelo menos dois dígitos com `(? =.*\ D.*? \ D)`.
*
Práticas recomendadas de segurança: Embora isso regex aplique um nível básico de complexidade, é crucial entender que Regex sozinho não é uma solução de segurança completa. Considere estas melhores práticas:
*
sal e hash: Nunca armazene as senhas em texto simples. Sempre use um forte algoritmo de hash (como Argon2, BCRYPT ou SCRYPT) com um sal exclusivo para cada senha.
*
medidores de força de senha: Use um medidor de força de senha para fornecer feedback em tempo real aos usuários enquanto eles digitam sua senha.
*
auditorias de segurança regulares: Revise regularmente suas políticas de senha e práticas de segurança.
*
Limitação da taxa: Implementar a limitação da taxa de login para evitar ataques de força bruta.
Exemplo:permitindo apenas os seguintes caracteres especiais:`!@#$%^&*` O regex se tornaria:
`` `regex
^(? =.*[a-za-z]) (? =.*\ d) (? =.*[!@#$%^&*]). {8,} $
`` `
Exemplo:exigindo pelo menos dois dígitos: `` `regex
^(? =.*[A-ZA-Z]) (? =.*\ d
`` `
Esta versão adiciona `(? =.*\ D.*? \ D)`, que requer pelo menos dois dígitos, com algum caractere entre permitido por `.*?`.
Escolha o regex que melhor se encaixa na sua * Política de senha específica e lembre -se de priorizar as melhores práticas de segurança. Sempre teste o Regex completamente com uma variedade de senhas válidas e inválidas.