Verwenden Sie einen RegularexpressionValidator, um eine Wortanzahl einzuschränken?
-
20-09-2019 - |
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
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,}