2009-02-17 3 views
7

Hat jemand einen regulären Ausdruck, der die Anzahl der Wörter in einer Antwort begrenzen würde? Zum Beispiel möchte ich es mit jQuery validate verwenden, damit ich eine Textbox/Textarea auf 250 Wörter beschränken kann. Die Felder werden Nur-Text sein.Begrenzen Sie die Anzahl der Wörter in einer Antwort mit einem regulären Ausdruck

Ich habe etwas Googeln gemacht, aber keiner von denen, die ich gefunden habe, waren sehr gut. Sie konzentrierten sich hauptsächlich darauf, \ b \ w + \ b zu tun, aber ich hatte Schwierigkeiten, es zum Laufen zu bringen.

+0

Es könnte mehr Sinn machen, Zeichen zu zählen - es gibt nichts, Leute aus nur der Eingabe und die Eingabe zu stoppen und tippen ohne Leerzeichen ... das heißt, VonCs Antwort sieht ausgezeichnet aus! –

+0

Was ist mit Interpunktion? Müssen Ihre Benutzer nur Wortzeichen und Leerzeichen eingeben? –

Antwort

8

Könnten Sie versuchen:

^(?:\b\w+\b[\s\r\n]*){1,250}$ 

bis zu 250 Wörter über mehrere Zeilen einschränken würde.

Ich fürchte, dass der ursprüngliche Vorschlag Alan:

/^\w+(?:\s+\w+){0,249}$/ 

könnte

Wenn nisten Wiederholungsoperatoren ein Fall von catastrophic backtracking sein, unbedingt darauf achten, dass es nur einen Weg, um das gleiche entsprechen Übereinstimmung

+0

Das schien in meinen Tests zu funktionieren. Ich bin mir nicht sicher, ob diese Version irgendwelche Nachteile hat, aber ich werde diese jetzt akzeptieren. – Jonathan

+0

Das funktioniert für mich, außer wenn ich ", @ es gibt falsch zurück. Können Sie mir sagen, was ich tun muss? Danke – iOSAppDev

+0

@ iOSAppDev Wortgrenzen (http://www.regular-expressions.info/wordboundaries.html) abhängen auf der Regex-Variante, die Sie verwenden, wenn Sie die Anführungszeichen einfach als Trennzeichen in meine Originalregex einfügen (zB:^(?: \ b \ w + \ b ["\ s \ r \ n] *) {1,250} $") funktioniert nicht, dann ist es am besten, alternative Lösung zu betrachten (was "neben Regex" bedeutet). – VonC

3

Wie wäre es, den Text mit einer Regex zu teilen (sagen wir "\ s +") und dann die Länge der resultierenden Liste zu zählen? Das wäre etwas einfacher zu lesen.

0

Hier ist der reguläre Ausdruck, den ich für die Validierung der Wortanzahl verwende.

(\w*\W*){0,250} 
1

Das hat gut für mich gearbeitet, zum Beispiel, wenn Sie ein 6-Wort zu begrenzen wollen:

^(?:\w+\W+){0,5}(?:\w+)$ 
Verwandte Themen