Je veux une expression régulière pour vérifier que:
Un mot de passe contient au moins huit caractères, dont au moins un chiffre et comprend les lettres majuscules et minuscules et des caractères spéciaux, par exemple #
, ?
, !
.
Il ne peut pas s'agir de votre ancien mot de passe ou contenir votre nom d'utilisateur "password"
, ou"websitename"
Et voici mon expression de validation qui est pour huit caractères dont une lettre majuscule, une lettre minuscule et un chiffre ou caractère spécial.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Comment puis-je l'écrire pour un mot de passe doit être composé de huit caractères dont une lettre majuscule, un caractère spécial et des caractères alphanumériques ?
la source
Vous pouvez utiliser cette expression régulière avec plusieurs assertions d'anticipation (conditions) :
Cette expression régulière appliquera ces règles:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(avec les ancres)la source
Les expressions régulières n'ont pas d'opérateur ET, il est donc assez difficile d'écrire une expression régulière qui correspond à des mots de passe valides, lorsque la validité est définie par quelque chose ET quelque chose d'autre ET quelque chose d'autre ...
Mais, les expressions régulières ont un opérateur OU, alors appliquez simplement le théorème de DeMorgan et écrivez une expression régulière qui correspond aux mots de passe invalides:
Tout ce qui contient moins de huit caractères OU tout ce qui n'a pas de chiffres OU tout ce qui n'est pas en majuscule OU ou quoi que ce soit sans minuscule OU quoi que ce soit sans caractère spécial.
Donc:
Si quelque chose correspond à cela, alors c'est un mot de passe invalide.
la source
|[a-zA-Z0-9]*
.Juste une petite amélioration pour la réponse de @ anubhava: Étant donné que les caractères spéciaux sont limités à ceux du clavier, utilisez-le pour tout caractère spécial:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Cette expression régulière appliquera ces règles:
la source
\W
correspond uniquement aux caractères ASCII. Vous n'avez donc pas changé cela, et maintenant vous devez filtrer les espaces. De plus, toutes les parenthèses et{1,}
quantificateurs que vous avez ajoutés sont du bruit pur, et la suppression des?
opérateurs non gourmands ( ) était inutile. Il n'y a aucune amélioration ici.J'ai eu quelques difficultés à suivre la réponse la plus populaire pour ma situation. Par exemple, ma validation échouait avec des caractères tels que
;
ou[
. Je n'étais pas intéressé par la mise en liste blanche de mes caractères spéciaux, alors j'ai plutôt utilisé[^\w\s]
comme test - simplement - des caractères non verbaux (y compris numériques) et des espaces non blancs. Pour résumer, voici ce qui a fonctionné pour moi ...8
personnages1
un caractère numérique1
lettre minuscule1
lettre majuscule1
caractère spécialJSFiddle Link - démo simple couvrant divers cas
la source
(?=.*?[^\w\s])
par(?=.*?([^\w\s]|[_]))
pour ajouter un support pour les traits de soulignement et cela fonctionne très bien maintenant. De plus, @ Dinish.net, le système que j'utilise coupe l'espace blanc de la chaîne de mot de passe lorsque nous l'obtenons, donc l'utilisation de la méthode vanilla JS String.prototype.trim () fonctionnerait bien si vous souhaitez utiliser cette réponse.Une version plus "générique" (?), N'autorisant aucune lettre anglaise comme caractère spécial .
la source
Importez le fichier JavaScript
jquery.validate.min.js
.Vous pouvez utiliser cette méthode:
la source
Essaye celui-là:
Expression:
Caractères spéciaux facultatifs:
Expression:
Si la condition min et max n'est pas requise, supprimez
.{6, 16}
la source
Ne répondant pas directement à la question, mais faut-il vraiment que ce soit une expression régulière?
J'avais l'habitude de faire beaucoup de Perl et de m'habituer à résoudre des problèmes avec des expressions rationnelles. Cependant, quand ils deviennent plus compliqués avec toutes les perspectives et autres bizarreries, vous devez écrire des dizaines de tests unitaires pour tuer tous ces petits bugs.
De plus, une expression régulière est généralement quelques fois plus lente qu'une solution impérative ou fonctionnelle.
Par exemple, la fonction Scala suivante (pas très FP) résout la question d'origine environ trois fois plus rapidement que l'expression régulière de la réponse la plus populaire. Ce qu'il fait est également si clair que vous n'avez pas du tout besoin d'un test unitaire:
la source
Je répondrais à Peter Mortensen, mais je n'ai pas assez de réputation.
Ses expressions sont parfaites pour chacune des exigences minimales spécifiées. Le problème avec ses expressions qui ne nécessitent pas de caractères spéciaux est qu'elles n'autorisent pas non plus les caractères spéciaux, elles imposent donc également des exigences maximales, ce que je ne crois pas que l'OP ait demandé. Normalement, vous voulez permettre à vos utilisateurs de rendre leur mot de passe aussi fort qu'ils le souhaitent; pourquoi restreindre les mots de passe forts?
Ainsi, son expression "au moins huit caractères, au moins une lettre et un chiffre":
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
atteint l'exigence minimale, mais les caractères restants ne peuvent être que des lettres et des chiffres. Pour autoriser (mais pas exiger) des caractères spéciaux, vous devez utiliser quelque chose comme:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
pour autoriser tous les caractèresou
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
pour autoriser des caractères spéciaux spécifiquesDe même, "au moins huit caractères, au moins une lettre majuscule, une lettre minuscule et un chiffre:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
répond à cette exigence minimale, mais autorise uniquement les lettres et les chiffres. Utilisation:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
pour autoriser tous les caractèresou
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
pour autoriser des caractères spéciaux spécifiques.la source
la source
|{}:;<>/])[A-Za-z\d$@$!%*?&+~
| {}:; <> /] {8,15} qui comprendra les caractères non alphanumériques suivants: (@ $!% *? & + ~ `| {}Qu'en est-il de la solution regex suivante:
^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$
Ce qui valide les éléments suivants:
Découvrez-le en travaillant sur le lien suivant https://regex101.com/r/qPmC06/4/
la source
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W\_])[A-Za-z\d\W\_]{8,}$
?Selon votre besoin, ce modèle devrait très bien fonctionner. Essaye ça,
Il suffit de créer une variable chaîne, d'assigner le modèle et de créer une méthode booléenne qui renvoie vrai si le modèle est correct, sinon faux.
Échantillon:
la source
J'ai trouvé beaucoup de problèmes ici, alors j'ai fait le mien.
La voici dans toute sa splendeur, avec des tests:
https://regex101.com/r/DCRR65/4/tests
À surveiller:
\w
parce que cela inclut_
, que je teste.la source
la source
@ClasG a déjà suggéré :
mais il n'accepte pas _ (trait de soulignement) comme caractère spécial (par exemple, Aa12345_).
Une amélioration est:
la source
Démo:
la source
Test de celui-ci en 2020:
Vérifiez-vous
la source
la source
Nous pouvons simplement le faire en utilisant HTML5.
Utilisez le code ci-dessous dans l'attribut de modèle,
Cela fonctionnera parfaitement.
la source
Vous pouvez utiliser le modèle d'expression régulière ci-dessous pour vérifier le mot de passe s'il correspond à vos attentes ou non.
la source
Vérification des liens en ligne https://regex101.com/r/mqGurh/1
la source
Utilisez ceci,
Il validera au moins un minuscule, un majuscule, un nombre et les caractères spéciaux de (!, @, #, $,%,?, =, *, &).
La longueur minimale est de 8 et la longueur maximale est de 20
la source
En Java / Android, pour tester un mot de passe avec au moins un chiffre, une lettre, un caractère spécial dans le schéma suivant:
la source
Essaye ça:
Cette expression régulière fonctionne parfaitement pour moi.
la source
Motif pour correspondre à au moins 1 caractère majuscule, 1 chiffre et tout caractère spécial et la longueur entre 8 à 63.
"^ (? =. [az]) (? =. [AZ]) (? =. * \ d) [a-zA-Z \ d \ W] {8,63} $"
Ce modèle a été utilisé pour la programmation JAVA.
la source
J'espère que les travaux ci-dessous. J'ai essayé cela dans la stratégie personnalisée Azure.
^ (? =. [az]) (? =. [AZ]) (? =. \ d) (? =. [@ # $% ^ & * -_ + = [] {} | \: ',? /
~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~ "() ;!] |. (?! @)) {6,16} $la source
En fait, je viens de copier la première réponse ici et de la transformer en une expression rationnelle plus pratique qui nécessite un caractère supérieur, un caractère inférieur et au moins 8 caractères, mais accepte tout "entre les deux".
Celui-ci est un exemple-regex qui nécessite
IMPORTANT : Cette expression régulière exclura également tous les autres caractères, par exemple les chiffres, les caractères spéciaux tels que $, #,! etc. - tant que les règles 1. à 3. correspondent à la chaîne d'entrée
Attention au "." alomst à la fin de l'expression régulière. Cela correspondra à presque tous les caractères (et afaik tout lisible)
la source
Si vous souhaitez utiliser des expressions régulières pour vérifier au moins huit caractères, au moins une lettre majuscule, au moins une lettre minuscule, au moins un chiffre de 0 à 9 et au moins un caractère spécial de:! @ # $% ^ & * _? ET donnez également à l'utilisateur un peu plus d'informations sur ce qu'il manque dans le mot de passe, vous pouvez utiliser le code suivant:
la source
Une solution que j'ai trouvée dans l'une des réponses précédentes:
* Minimum 8 caractères au moins 1 alphabet majuscule, 1 alphabet minuscule, 1 chiffre et 1 caractère spécial:
... n'a pas fonctionné pour moi, mais ce qui suit est une version simplifiée et fonctionne très bien (ajoutez n'importe quel caractère spécial que vous aimez, j'ai ajouté # ici), et ajoutez la règle numérique comme vous le faites avec les lettres comme:
la source