2011-01-13 7 views
1

Der folgende reguläre Ausdruck funktioniert in Chrome und Firefox, aber nicht IE7:Passwort Regex funktioniert in Chrome und Firefox, aber nicht IE7

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

Es muss mindestens 8 Zeichen lang sein und mindestens auf Großbuchstaben und eine Zahl. Wenn ich dies in IE7 versuche, muss ich 14 Zeichen eingeben, um es zu validieren. Kann jemand erklären, warum und was der richtige Ausdruck für alle 3 Browser wäre.

Ich benutze einen asp: RegularExpressionValidator, um das Passwort zu validieren.

+1

* * Confused. Dies wird als C# und ASP.NET markiert, also läuft diese Regex serverseitig und der Browser ist irrelevant? Wenn dies Javascript ist, markieren Sie es bitte als solches. –

+0

Nun, die Regex ist ein asp: RegularExpressionValidator, die clientseitige Validierung ist. Ich glaube, dass die Regex standardmäßig clientseitig ausgeführt wird, es sei denn, ich gebe einen serverseitigen validierten Ereignishandler an. Korrigiere mich, wenn ich falsch liege? – Xaisoft

+0

Wenn das Problem im IE, aber nicht im Firefox auftritt, muss es * auf dem Client ausgeführt werden. Weißt du überhaupt, welche HTML/JS-Quelle erzeugt wird? Ich denke, Sie müssen mehr lernen, dass nur "Regex". –

Antwort

0
str.length > 8 
/[A-Z]/ 
/\d/ 

Drei Kontrollen gegen ein Monster Regex. Was ist einfacher zu lesen und verursacht keine Probleme in IE?

if(str.length > 8 && str.search(/[A-Z]/) != -1 && str.search(/\d/) != -1) 
{ 
    //Don't use big long regex when you don't need it 
} 
+0

Ich bin neu zu Regex, so bin ich ein wenig verwirrt durch Ihre Antwort. – Xaisoft

+0

Die Lösung ist weniger Regex zu verwenden. –

+0

@Xaisoft: Er sagt, dass Sie drei einfache Prüfungen durchführen sollten, anstatt zu versuchen, nur einen regulären Ausdruck zu finden. Neulinge gegenüber regulären Ausdrücken glauben manchmal, dass Regexes alles lösen können, oder dass die Verwendung von Eins die optimale Lösung ist. Wie Stefan Kendalls Antwort zeigt, ist es viel einfacher, jede Überprüfung einzeln durchzuführen: Überprüfen Sie zunächst die Länge der Zeichenfolge, prüfen Sie, ob ein Großbuchstabe vorhanden ist, und prüfen Sie, ob eine Ziffer vorhanden ist. (Sie können auch nach nur alphanumerisch mit einer weiteren Überprüfung wie folgt suchen: '^ [A-Za-z0-9] + $') –