2012-04-13 11 views
2

Ich benutze RegularExpressionValidator Steuer TextBox Steuerelement mit dem Namen TextBox1, das Web-Formular in VS2003 Web-Anwendung, um zu überprüfen, wie unten:Verwenden zweimal postive Look-Ahead arbeitet nicht auf .Net 1.1

<asp:TextBox id="TextBox1" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Fromat error." 
ValidationExpression="^(?=.*[0-9])(?=.*[a-zA-Z]).{8,10}$" ControlToValidate="TextBox1"></asp:RegularExpressionValidator> 

Wenn ich Eingabestring "qwer1asd", es passt nicht. Aber der gleiche reguläre Ausdruck:

... entspricht in JavaScript. Wie repariere ich es?

Antwort

1

diese regex Versuchen:

^(?=.{8,10}$)(?=.*[0-9])(?=.*[a-zA-Z]).+$ 

Es ist ein Fehler in älteren Versionen von Internet Explorer (here beschrieben), die ein regulärer Ausdruck wie dies verursacht in dem Client fehlschlagen, obwohl es auf dem Server gearbeitet. (Das klingt wie das Gegenteil von dem, was Sie beschreiben, aber ich sehe keinen anderen Grund, warum Ihre Regex fehlschlagen würde.) Das Verschieben der Längenprüfung auf den ersten Lookahead ist die bewährte Problemumgehung für den Fehler.

+0

Vielen Dank Ihre Antwort. Ja, ich habe versucht mit IE6/7/8/9 zu surfen, IE6/7 war fehlgeschlagen, aber IE8/9 war korrekt. Und benutze deine Antwort, IE6/7/8/9 war korrekt. Vielen Dank. – smartleos