^(? =.*[A-Za-Z]) (? =.*\ d) (? =.*[!@#$%^&*(),.? ":{} | <> \ -_+=\\` ~; ']). {8,} $
`` `` ``
Explicación:
* `^`:Coincide con el comienzo de la cadena.
* `(? =.* [A-ZA-Z])`:Afirmación positiva de LookAhead que requiere al menos una letra (A-Z o A-Z).
* `(? =.* \ d)`:Aserción positiva de lookhead que requiere al menos un dígito (0-9).
*'(? La clase de caracteres (por ejemplo, `\` y `--`).
* `. {8,}`:coincide con cualquier carácter (excepto Newline) al menos 8 veces. Esto asegura la longitud mínima.
* `$`:Coincide con el final de la cadena.
Cómo usarlo en diferentes contextos:
* JavaScript:
`` `JavaScript
const PasswordRegex =/^(?=.*ficA-Za-ZfontNO)(?=.*\D)(?=.*…_#$%^&*(),.
Const Password ="myp@ssword123";
const isValid =contraseñagex.test (contraseña);
console.log (isValid); // Salida:Verdadero
const invalidPassword ="Short1!";
const isInvalid =PasswordGex.Test (InvalidPassword);
console.log (isInvalid); // Salida:Falso
`` `` ``
* Python:
`` `Python
importar
contraseña_regex =r "^(? =.*[A-Za-Z]) (? =.*\ d) (? =.*[!@#$%^&*(),. \":{} | <> \ -_+=\\ `~; ']). {8,} $" "
contraseña ="myp@ssword123"
is_valid =re.match (contraseña_regex, contraseña)
print (bool (is_valid)) # Salida:Verdadero
invalid_password ="¡Short1!"
is_invalid =re.match (contraseña_regex, invalid_password)
print (bool (is_invalid)) # salida:falso
`` `` ``
* java:
`` `Java
import java.util.regex.matcher;
import java.util.regex.pattern;
Clase pública PasswordValidator {
public static void main (string [] args) {
String PasswordRegex ="^(? =.*[A-Za-Z]) (? =.*\\ d) (? =.*[!@#$%^&*(),. \":{} | <> -_+=\\ `~; ']). {8,} $";
Cadena contraseña ="myp@ssword123";
Pattern Pattern =Pattern.Compile (PasswordEgex);
Matcher matcher =patrón.matcher (contraseña);
System.out.println (matcher.matches ()); // Salida:Verdadero
String InvalidPassword ="Short1!";
Matcher =Pattern.Matcher (InvalidPassword);
System.out.println (matcher.matches ()); // Salida:Falso
}
}
`` `` ``
Consideraciones y personalización importantes:
* caracteres especiales: La parte más crítica es definir los caracteres especiales permitidos. El `[!@#$%^&*(),.?":{} | <> \ -_+=\\ `~; ']` Parte de la regla define qué caracteres se consideran "especiales". Examine cuidadosamente y modifique esto para que coincida con sus requisitos específicos. Recuerde escapar de los personajes especiales de Regex.
* Conjuntos de caracteres:
* `[A-ZA-Z]`:coincide con cualquier letra mayúscula o minúscula. Es posible que desee restringir esto a solo letras minúsculas o solo mayúsculas si es necesario.
* `\ d`:coincide con cualquier dígito (0-9).
* Longitud mínima: La parte `{8,}` especifica una longitud mínima de 8 caracteres. Cambie el `8` para ajustar la longitud mínima. Si también desea una longitud máxima, puede especificarlo así:`{8,16}` para un mínimo de 8 y un máximo de 16 caracteres.
* Requisitos de complejidad: Puede agregar más requisitos de complejidad agregando más afirmaciones de LookAhead. Por ejemplo, podría requerir al menos dos dígitos con `(? =.*\ D.*? \ D)`.
* Las mejores prácticas de seguridad: Si bien este Regex impone un nivel básico de complejidad, es crucial comprender que Regex solo no es una solución de seguridad completa. Considere estas mejores prácticas:
* sal y hash: Nunca almacene contraseñas en texto plano. Siempre use un algoritmo de hash fuerte (como Argon2, BCrypt o Scrypt) con una sal única para cada contraseña.
* Medidores de fuerza de contraseña: Use un medidor de fuerza de contraseña para proporcionar comentarios en tiempo real a los usuarios a medida que escriben su contraseña.
* Auditorías de seguridad regulares: Revise regularmente sus políticas de contraseña y prácticas de seguridad.
* Limitando la velocidad: Implementar la limitación de la tasa en los intentos de inicio de sesión para prevenir los ataques de fuerza bruta.
Ejemplo:Permitir solo los siguientes caracteres especiales:`!@#$%^&*`
El Regex se convertiría:
`` `regex
^(? =.*[A-Za-Z]) (? =.*\ d) (? =.*[!@#$%^&*]). {8,} $
`` `` ``
Ejemplo:requerir al menos dos dígitos:
`` `regex
^((? =.*[A-Za-Z]) (? =.*\ d.*? \ d) (? =.*[!@#$%^&*(),.? ":{} | <> \ -_+=\\` ~; ']). {8,} $
`` `` ``
Esta versión agrega `(? =.*\ D.*? \ D)`, que requiere al menos dos dígitos, con cualquier personaje intermedio permitido por `.*?`.
Elija el Regex que mejor se adapte a * su * política de contraseña específica y recuerde priorizar las mejores prácticas de seguridad. Siempre pruebe el regex bien con una variedad de contraseñas válidas e inválidas.