2009-06-09 13 views
7

Ich habe ein Problem, bei dem ich eine RegularExpressionValidator verwenden muss, um die Länge einer Zeichenfolge auf 400 Zeichen zu begrenzen.Regulärer Ausdruck zur Begrenzung der Zeichenfolgenlänge

Mein Gesichtsausdruck war .{0,400}

Meine Frage: Gibt es eine Möglichkeit, die Länge der Zeichen 400 ohne Berücksichtigung von Leerstellen zu begrenzen?

Ich möchte Leerzeichen in der Zeichenfolge akzeptieren, aber nicht in der Länge zählen. Ist das möglich?

+0

Dies ist nicht unbedingt mit einem regulären Ausdruck möglich, aber in vielen Sprachen. In welcher Sprache möchten Sie dies umsetzen? – Copas

+0

Ich verwende das RegularExpressionValidator-Steuerelement in einer asp.net-Webanwendung (vb.net). – Boopid

Antwort

11

ich mit Greg ziemlich einverstanden sind, aber hier ist die regex Sie wollen:

^\s*([^\s]\s*){0,400}$ 

@Boopid: Wenn Sie wirklich nur das Leerzeichen gemeint, ersetzen \ s mit einem Platz in der Regex.

+0

Sollte das nicht [^ \ s] anstelle von [^] sein? Ansonsten: schön! – Stephan202

+0

(oder bedeutet der Frager durch 'Leerzeichen' wirklich nur das Leerzeichen?) – Stephan202

+2

Oder einfach \ S statt [^ \ s] –

7

Es klingt, als ob Sie Ihre eigene Validator-Klasse schreiben sollten, anstatt den RegularExpressionValidator zu verwenden. Reguläre Ausdrücke haben sicherlich ihren Nutzen, aber das klingt nicht wie einer von ihnen.

Ihr benutzerdefinierter Prüfer konnte alle Leerzeichen entfernen und dann die Länge der Zeichenfolge überprüfen. Letztendlich wird der Code besser lesbar sein als ein regulärer Ausdruck, der dasselbe tut.

+0

Ich stimme zu, nur alle Leerzeichen entfernen und überprüfen Sie die Länge der Zeichenfolge. Wahrscheinlich sehr effizient im Vergleich zu der oben vorgeschlagenen Regex (obwohl dies nur eine Theorie ist). –