2009-10-10 8 views
2

J'ai une regex que j'utilise dans un asp.net RegularExpressionValidator pour vérifier un TextField.JavaScript Regex Browser Inconsistance?

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

L'exemple chaîne que j'ai trébuché sur est 'RedCoal1'

Firefox = Assorti
IE8 = Assorti
Chrome = Assorti

IE7 = ne correspond pas à

POURQUOI! !!!

Répondre

6

L'implémentation de lookahead dans RegExp de WSH tel qu'utilisé par IE is just broken. Le bug apparaît généralement dans ce cas précis, en essayant d'utiliser une expression régulière pour vérifier plusieurs choses à la fois.

De plus, certains navigateurs plus anciens ne supportent pas du tout le lookahead (il n'était pas dans la spécification JavaScript d'origine, bien qu'il soit maintenant dans ECMA-262-3). Donc, dans l'ensemble, il est préférable d'éviter lookahead dans le navigateur RegExp.

Il est préférable de séparer chaque vérification (chaque classe de caractères et chaque longueur) en étapes de validation manuelle.

+0

Oui, j'ai la même expérience. Donc ce que j'ai fait était d'éviter la validation côté client pour ce validateur particulier. –