2009-02-19 8 views
5

mit habe ich eine HtmlTextArea und ich möchte die Anzahl der Zeichen Benutzer eingeben kann bis 500.mehrzeiligen Texteingabe Validieren, wenn .NET

Derzeit ich RegularExpressionValidator ...

verwendet haben beschränken
RegularExpressiondValidator val = new RegularExpressiondValidator(); 
val.ValidationExpression = "^.{0,500}$"; 
val.ControlToValidate = id; 
val.ErrorMessage = "blah"; 

... das ist in Ordnung, wenn der Text in einer einzigen Zeile eingegeben wird, aber es schlägt sofort die Validierung fehl, wenn der Text ein neues Zeilenzeichen enthält (dh ist mehrzeilig).

Ich erkenne, es gibt verschiedene reguläre Ausdrucksmaschinen und ich muss mit der .NET-Test (kann jemand mich in Richtung einer guten Online?), Aber ich habe ein paar andere Dinge, einschließlich der Vorbereitung " (? m) "zu meiner Ausdruckskette, und Ersetzen von^und $ durch \ A und \ Z, aber bisher kein Glück.

Eine weitere verwandte Frage, kann ich vermeiden, einen regulären Ausdruck überhaupt zu verwenden und diesen Validator irgendwie mit meiner eigenen Validierungsfunktion zu verknüpfen?

Antwort

6

die "." enthält keine neuen Zeilen.

^((|. \ N) {0500}) $

This page könnte auch helfen, seinen einen Regex Spickzettel.

+1

Sie müssen Parens anstelle von Klammern verwenden. Klammern zeigen Oder an, aber Sie haben die | hinzugefügt in ihrem auch. – JaredPar

+0

Ja, ich habe es sofort aktualisiert, nachdem ich festgestellt habe, dass ich das gemacht habe. – ccook

+0

Ich dachte noch etwas darüber nach und ich glaube, es hätte noch funktioniert. Das | in diesem Fall war nur überflüssig. Ich kann mich jedoch nicht zu 100% erinnern, wenn \ n in einem [] als 2 Zeichen oder als Zeilenumbruch behandelt wird. – JaredPar

6

Ihre regex zum

folgende Änderung
"^(.|\n){0,500}$"; 

The. Zeichen entspricht allem außer einem Zeilenumbruch. Mit der Klausel/wird Ihr Problem behoben.

1

Ich würde dies auf zwei Arten tun, wenn Sie Javascript kennen und die clientseitige Zeichenlänge einschränken möchten, könnten Sie es mit jQuery (einer beliebten JavaScript-Erweiterungsbibliothek) tun.

$(document).ready(function(){ 
    var $TextBox = $("#<%=TextBox.ClientID %>"); 

    $TextBox.keyup(function(){ 
    return $TextBox.length <= <%=TextBox.MaxLength %>; 
    }); 
}); 

Dann eine ähnliche Überprüfung Server-Seite mit einem benutzerdefinierten Validator oder in Ihrer Schaltfläche klicken Methode.

Es gibt auch Möglichkeiten, um ASP.Net Validatoren mit Javascript zu aktivieren und zu deaktivieren, damit Sie auch das untersuchen können.

+0

Interessant, aber verlierst du nicht die "Vollständigkeit" der Kontrolle? Das heißt, die Hälfte der Validierung befindet sich im Validierer auf der Serverseite, während sich die andere Hälfte auf der Seite befindet. – ccook

+0

Ihre Lösung ist offensichtlich die eleganteste. Ich dachte nur, ich würde eine Alternative rauswerfen. Ich habe ASP.Net Validatoren für einige Dinge. – hunter

Verwandte Themen