Frage

Ich möchte ein ASP.NET RegularexpressionValidator verwenden, um die Anzahl der Wörter in einem Textfeld zu begrenzen. (Der RegularexpressionValidator ist meine bevorzugte Lösung, da er sowohl Client- als auch Server -Seitenüberprüfungen durchführt.)

Was wäre also der richtige Regex, um den RegularexpressionValidator einzugeben, der die Wörter zählt und ein Wortlimit erzwingt? Denn sagen wir 150 Wörter.

(NB: Das sehe ich diese Frage ist ähnlich, aber die angegebenen Antworten scheinen auch auf Code wie Split () zu beruhen, also glaube ich nicht

War es hilfreich?

Lösung

Seit ^ und $ ist implizit mit regularexpressionvalidatoren festgelegt, Verwenden Sie Folgendes:

(\S*\s*){0,10}

Die 0 hier erlaubt leere Zeichenfolgen (genauer gesagt 0 Wörter) und 150 ist die maximale Anzahl von Wörtern zu akzeptieren. Passen Sie diese nach Bedarf an, um die Anzahl der akzeptierten Wörter zu erhöhen/zu verringern.

Das obige Regex ist nicht greedisch, sodass Sie eine schnellere Übereinstimmung mit Versen erhalten, die in der Frage angegeben sind, auf die Sie sich verweisen. (\b.*\b){0,10} ist gierig, so dass Sie die Anzahl der Wörter erhöht haben, wenn Sie eine Leistung verringern.

Andere Tipps

Hier ist eine kurze Referenz für reguläre Ausdrücke:http://msdn.microsoft.com/en-us/library/az24scfc.aspx

Sie können diese Site verwenden, um die Ausdrücke zu testen:http://regexpal.com/

Hier ist mein Regex -Beispiel, das sowohl mit minimaler als auch mit maximaler Wortzahl funktioniert (und den Fehler mit dem führenden Abstand festlegt):

^\s*(\S+\s+|\S+$){10,150}$

Überprüfen Sie diese Seite:

http://lawrence.ecorp.net/inet/samples/regexp-validate.php#count

Sein JavaScript Regex, ist aber ASP.NET sehr ähnlich

Es ist so etwas:

( b [a-z0-9]+ b.*) {4,}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top