Invalide la séquence d'échappement \d
Je suis en train de vérifier si un mot de passe contenant au moins une lettre minuscule, une lettre majuscule, un chiffre et un caractère spécial.
j'essaie ceci:
if(!password.matches("(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])")){
username = "Error";
}
mais donnez-moi une erreur en disant: invalid séquence d'échappement.
Quelqu'un peut m'aider à résoudre le problème et peut confirmer que c'est un modèle correct?
Merci, whit \\d ne pas faire d'erreur, mais il ne correspond pas avec une chaîne comme Paul%88 pourquoi?
essayez de remplacer le \d avec \\d
Avez-vous essayer de remplacer \d \\d? (en retard sur le déclencheur à nouveau!)
Je recommande soigneusement de tester chacune de ces caractères spéciaux. Ils peuvent avoir une signification particulière dans la regex et peut-être besoin d'être échappé.
Avez-vous essayer de remplacer \d \\d? (en retard sur le déclencheur à nouveau!)
Je recommande soigneusement de tester chacune de ces caractères spéciaux. Ils peuvent avoir une signification particulière dans la regex et peut-être besoin d'être échappé.
OriginalL'auteur Matteo | 2011-07-15
Vous devez vous connecter pour publier un commentaire.
Java traiter
\
à l'intérieur d'une chaîne, comme le démarrage d'une séquence d'échappement. Assurez-vous d'utiliser\\
à la place (de sorte que vous obtenez une réelle\
caractère dans la chaîne) et vous devriez être ok.Mise à Jour rapide: Etienne, si vous voulez vraiment un
\
dans l'expression régulière, vous aurez besoin d'utiliser\\\\
, depuis que produira\\
dans la chaîne, qui va produire\
dans la RegEx.Nouvelle Question de mise à Jour: Vous mentionnez que votre RegEx ne fonctionne pas, et je suis sûr que c'est parce que c'est faux. Si vous voulez juste pour s'assurer que l'un de chaque type de classe de personnage est présent, vous pouvez créer une RegEx pour chaque classe, et puis vérifier le mot de passe à l'encontre de chacun. Les mots de passe sont à peu près garanti à court (et vous pouvez réellement contrôler vous-même) de sorte que la perf frappé devrait être minime.
Et cela signifie que, pour obtenir effectivement le caractère \ dans une Java regex, il faut écrire \\\\.
maintenant, ne donnent pas une erreur mais ne correspondent pas à une chaîne comme Paul%88
Maintenant que vous avez backslashitis...
Ce site m'ont beaucoup aidé avec cela. Vous obtenez en fait un Java chaîne à partir de la regex que vous soumettez. regexplanet.com/advanced/java/index.html
OriginalL'auteur dlev
J'ai utilisé ce tester rapidement: http://www.regexplanet.com/simple/index.html
Dirait qu'il fonctionne si vous avez mis .* à la fin. Je suppose que vous avez besoin pour inclure un non-look-ahead regex.
Ici est l'ensemble de la regex:
De cours dans votre code java vous devez vous échapper de la barre oblique inverse comme déjà mentionné.
.*
dit à la fin "tout"?Pas de. Je l'ai testé et il nécessite bien tous les caractères avant d'appariement. Je crois que si on ne comprend pas tout non-look-autour de groupes, alors c'est comme si vous fourni un vide regex et si votre chaîne est rien mais vide qu'il ne correspond pas.
Vous avez raison. J'ai testé une chaîne, je pensais ne correspondent pas, mais qui n'ont, en réalité, il devrait avoir de correspondance.
OriginalL'auteur Sarel Botha