Quiero una expresión regular para verificar eso:
Una contraseña contiene al menos ocho caracteres, incluyendo al menos un número e incluye tanto las letras minúsculas y mayúsculas y caracteres especiales, por ejemplo #
, ?
, !
.
No puede ser su contraseña anterior o contener su nombre de usuario "password"
, o"websitename"
Y aquí está mi expresión de validación que es para ocho caracteres, incluyendo una letra mayúscula, una letra minúscula y un número o carácter especial.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
¿Cómo puedo escribirlo para una contraseña que debe tener ocho caracteres, incluyendo una letra mayúscula, un carácter especial y caracteres alfanuméricos ?
fuente
Puede usar esta expresión regular con múltiples aserciones anticipadas (condiciones) :
Esta expresión regular hará cumplir estas reglas:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(con los anclajes)fuente
Las expresiones regulares no tienen un operador AND, por lo que es bastante difícil escribir una expresión regular que coincida con contraseñas válidas, cuando la validez se define por algo Y algo más Y algo más ...
Pero, las expresiones regulares tienen un operador OR, así que solo aplique el teorema de DeMorgan y escriba una expresión regular que coincida con contraseñas no válidas:
Cualquier cosa con menos de ocho caracteres O cualquier cosa sin números O cualquier cosa sin mayúsculas O cualquier cosa sin minúsculas O cualquier cosa sin caracteres especiales.
Entonces:
Si algo coincide con eso, entonces es una contraseña no válida.
fuente
|[a-zA-Z0-9]*
.Solo una pequeña mejora para la respuesta de @anubhava: dado que los caracteres especiales están limitados a los del teclado, use esto para cualquier carácter especial:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Esta expresión regular hará cumplir estas reglas:
fuente
\W
solo coincide con los caracteres ASCII. Entonces no ha cambiado eso, y ahora tiene que filtrar los caracteres de espacios en blanco. Además, todos los paréntesis y{1,}
cuantificadores que agregó son puro ruido, y eliminar los?
operadores no codiciosos ( ) no tenía sentido. No hay mejora aquí.Tuve algunas dificultades para seguir la respuesta más popular para mis circunstancias. Por ejemplo, mi validación estaba fallando con caracteres como
;
o[
. No estaba interesado en incluir en una lista blanca mis caracteres especiales, por lo que en su lugar aproveché[^\w\s]
como prueba, simplemente poner, coincide con los caracteres que no son palabras (incluidos los numéricos) y los que no son espacios en blanco. Para resumir, esto es lo que funcionó para mí ...8
personajes1
carácter numérico1
letra minúscula1
letra mayúscula1
un personaje especialJSFiddle Link : demostración simple que cubre varios casos
fuente
(?=.*?[^\w\s])
con(?=.*?([^\w\s]|[_]))
añadir soporte para guiones y funciona muy bien ahora. También @ Dinish.net, el sistema que uso recorta el espacio en blanco de la cadena de contraseña cuando lo obtenemos, por lo que usar el método vanilla JS String.prototype.trim () funcionaría bien si desea usar esta respuesta.Una versión más "genérica" (?), Que no permite letras inglesas como caracteres especiales .
fuente
Importa el archivo JavaScript
jquery.validate.min.js
.Puedes usar este método:
fuente
Prueba este:
Expresión:
Caracteres especiales opcionales:
Expresión:
Si no se requieren las condiciones mínimas y máximas, elimine
.{6, 16}
fuente
No responde directamente a la pregunta, pero ¿realmente tiene que ser una expresión regular?
Solía hacer mucho Perl, y me acostumbré a resolver problemas con expresiones regulares. Sin embargo, cuando se vuelven más complicados con todos los look-aheads y otras peculiaridades, debes escribir docenas de pruebas unitarias para matar a todos esos pequeños errores.
Además, una expresión regular suele ser varias veces más lenta que una solución imperativa o funcional.
Por ejemplo, la siguiente función Scala (no muy FP) resuelve la pregunta original aproximadamente tres veces más rápido que la expresión regular de la respuesta más popular. Lo que hace también es tan claro que no necesita una prueba unitaria:
fuente
Le respondería a Peter Mortensen, pero no tengo suficiente reputación.
Sus expresiones son perfectas para cada uno de los requisitos mínimos especificados. El problema con sus expresiones que no requieren caracteres especiales es que tampoco PERMITEN caracteres especiales, por lo que también imponen requisitos máximos, lo que no creo que el OP solicitó. Normalmente desea permitir que sus usuarios hagan que su contraseña sea tan segura como quieran; ¿Por qué restringir contraseñas seguras?
Entonces, su expresión "mínimo ocho caracteres, al menos una letra y un número":
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
logra el requisito mínimo, pero los caracteres restantes solo pueden ser letras y números. Para permitir (pero no requerir) caracteres especiales, debe usar algo como:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
para permitir cualquier personajeo
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
para permitir caracteres especiales específicosDel mismo modo, "mínimo ocho caracteres, al menos una letra mayúscula, una letra minúscula y un número:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
cumple con ese requisito mínimo, pero solo permite letras y números. Utilizar:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
para permitir cualquier personajeo
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
para permitir caracteres especiales específicos.fuente
fuente
|{}:;<>/])[A-Za-z\d$@$!%*?&+~
| {}:; <> /] {8,15} que incluirá los siguientes caracteres no alfanuméricos: (@ $!% *? & + ~ `| {}¿Qué hay de considerar la siguiente solución regex:
^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$
Lo que valida lo siguiente:
Compruébelo trabajando en el siguiente enlace https://regex101.com/r/qPmC06/4/
fuente
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W\_])[A-Za-z\d\W\_]{8,}$
?Según su necesidad, este patrón debería funcionar bien. Prueba esto,
Simplemente cree una variable de cadena, asigne el patrón y cree un método booleano que devuelva verdadero si el patrón es correcto, de lo contrario, falso.
Muestra:
fuente
He encontrado muchos problemas aquí, así que hice el mío.
Aquí está en todo su esplendor, con pruebas:
https://regex101.com/r/DCRR65/4/tests
Cosas a tener en cuenta:
\w
porque eso incluye_
, lo que estoy probando.fuente
fuente
@ClasG ya ha sugerido :
pero no acepta _ (guión bajo) como un carácter especial (por ejemplo, Aa12345_).
Una mejorada es:
fuente
Manifestación:
fuente
Prueba de este en 2020:
Verifícate
fuente
fuente
Solo podemos hacer esto usando HTML5.
Use el siguiente código en el atributo de patrón,
Funcionará perfectamente.
fuente
Puede usar el siguiente patrón de expresión regular para verificar la contraseña si coincide o no con sus expectativas.
fuente
Verificación de enlaces en línea https://regex101.com/r/mqGurh/1
fuente
Utilizar este,
Validará para al menos una minúscula, una mayúscula, un número y los caracteres especiales de (!, @, #, $,%,?, =, *, &).
La longitud mínima es 8 y la longitud máxima es 20
fuente
En Java / Android, para probar una contraseña con al menos un número, una letra, un carácter especial en el siguiente patrón:
fuente
Prueba esto:
Esta expresión regular me funciona perfectamente.
fuente
Patrón para que coincida con al menos 1 carácter en mayúscula, 1 dígito y cualquier carácter especial y la longitud entre 8 y 63.
"^ (? =. [az]) (? =. [AZ]) (? =. * \ d) [a-zA-Z \ d \ W] {8,63} $"
Este patrón se usó para la programación JAVA.
fuente
Espero que lo siguiente funcione. Intenté esto en la política personalizada de Azure.
^ (? =. [az]) (? =. [AZ]) (? =. \ d) (? =. [@ # $% ^ & * -_ + = [] {} | \: ',? /
~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~ "() ;!] |. (?! @)) {6,16} $fuente
De hecho, acabo de copiar la primera respuesta aquí y la convertí en una expresión regular más conveniente para UX que necesita una superior, una inferior y al menos 8 caracteres, pero acepta todo "en el medio".
Este es un ejemplo de expresión regular que requiere
IMPORTANTE : Esta expresión regular también excepto todos los demás caracteres, por ejemplo, números, caracteres especiales como $, # ,! etc. , siempre que las reglas 1. a 3. coincidan con la cadena de entrada
Cuidado con el "." casi al final de la expresión regular. Esto coincidirá con casi cualquier personaje (y afaik cualquier personaje legible)
fuente
Si desea utilizar expresiones regulares para verificar un mínimo de ocho caracteres, al menos una letra mayúscula, al menos una letra minúscula, al menos un número del 0 al 9 y al menos un carácter especial de:! @ # $% ^ & * _? Y también le da al usuario un poco más de información sobre lo que falta en la contraseña, puede usar el siguiente código:
fuente
Una solución que encontré en una de las respuestas anteriores como:
* Mínimo 8 caracteres al menos 1 alfabeto en mayúsculas, 1 alfabeto en minúsculas, 1 número y 1 carácter especial:
... no funcionó para mí, pero la siguiente es una versión simplificada y funciona muy bien (agregue cualquier carácter especial que desee, agregué # aquí) y agregue la regla de número como lo hace con las letras como:
fuente