2010-03-25 8 views
2

J'utilise le contrôle de changement de mot de passe Asp.net dans mon application et tout semble être trouvé et dandy jusqu'à ce qu'un utilisateur me dise qu'il a un problème pour satisfaire aux exigences de résistance lors du changement son mot de passe. En regardant dans cela, elle utilise IE 7 et peu importe ce qu'elle met, la validation échoue (et seulement dans IE 7. Firefox, IE 8, Chrome, etc fonctionnent tous comme prévu). Voici le regex j'utilise:Modifier le contrôle de mot de passe RegEx validant étrangement dans IE 7 seulement

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{5,15}$ 

J'ai essayé quelques autres que j'ai trouvé dans ce site et d'autres que les gens semblent utiliser sans problème et je viens dans le même problème .

Il semble que le motif que j'attrape en dernier (chiffre, alpha supérieur ou inférieur) est celui qui devrait être répété min de 5 fois. Par exemple:

Hello1 (ne fonctionne pas)

11111Hello (ne fonctionne pas)

Hello11111 (travaux)

Encore une fois, ce n'est que dans IE 7. J'ai passé trop de temps à ce sujet déjà et je suis perplexe. Quelqu'un a des idées??

Répondre

3

Apparemment, Internet Explorer a un bug. Découvrez ce post: A JScript/VBScript Regex Lookahead Bug. L'exemple est le même - une vérification de mot de passe - et ils fournissent une solution de rechange. Grâce à leur approche proposée comme guide, le modèle devient:

^(?=.{5,15}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).* 

Leur modèle est très semblable à la vôtre, à l'exception du négatif regard autour des espaces.


Essayez d'utiliser .*. En utilisant seulement . ne couvre qu'un seul caractère suivi de ce que vous spécifiez dans le look-arounds. Vous voulez regarder tout en avant et voir si quelque chose correspond. J'ai essayé l'expression suivante dans Expresso et cela a fonctionné avec les exemples que vous avez listés et aussi échoué sur les entrées invalides comme prévu.

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{5,15}$ 
+0

intéressant, j'ai le * dans mon regex mais d'une manière ou d'une autre il a été abandonné quand j'ai posté. Je n'ai pas remarqué ça. – earthling

+0

@senloe ok pas de problème. Voir ma mise à jour avec le lien du blog. –

+0

merci! J'ai essayé des variations, en mettant le 5,15 à l'avant mais je n'ai jamais eu raison. C'était un bon article expliquant le problème. Merci! – earthling