2016-09-27 1 views
3

Ich brauche einen regulären Ausdruck, der nicht mehr als 150 Wörter erlaubt. Ich habe einige Ausdrücke ausprobiert, aber alle zählen Zeichen, keine Wörter.150 Word Count Regex

Meine Versuche:

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

Ihre Formulierung ein wenig verwirrend ist, aber wenn ich die Dinge richtig verstehe, wollen Sie wahrscheinlich so etwas wie ' "\ W * (/ w +/W *) {0150}"'. – XenoRo

+0

Vielen Dank. Ich meinte, mit dem regulären Ausdruck sollte man nicht mehr als 150 Wörter schreiben. Ich möchte diese Validierung auf einen Textbereich in meinem Formular setzen. Ich werde es versuchen. Wirklich zu schätzen – KH2301

+0

Was, wenn alle Wörter zusammenhalten? ohne Zwischenraum? – revo

Antwort

0

nicht sicher, was Sie durch die Einschränkung der Eingabe mit regulären Ausdrücken bedeuten. Regex wird verwendet, um Muster zu extrahieren oder zu vergleichen. Sie können diese Informationen verwenden, um die Eingabe einzuschränken.

Unter regulären Ausdruck wird eine Aussage mit 150 "Wörtern" übereinstimmen.

^(?:\s*\S+){1,150}$ 

^ Anchor to the beginning of the input 
$ Anchor to the endof the input 
\s: Space character 
\S: Non space character 
(?:xxx): Grouping without capturing 
{1,150} : Match 1 - 150 instances of the preceding expression 

Ich benutze doppelte Anführungszeichen für ein Wort, da es die folgenden Satz zählen wird, wie jeweils von 6 Wörtern und 7 Wörtern gemacht, aufgrund der Raum vor der Periode

I am happy. This is good 
I am happy . This is good 

Sie können das entfernen^und $ Zeichen aus dem Ausdruck, um einfach die ersten 150 Wörter zu extrahieren, wenn Sie möchten.

+0

Vielen Dank. Ich meinte, mit dem regulären Ausdruck sollte man nicht mehr als 150 Wörter schreiben. Ich möchte diese Validierung auf einen Textbereich in meinem Formular setzen. Ich werde es versuchen. Wirklich zu schätzen – KH2301

+0

Diese Regex wird Probleme haben ... Da dies auf dem Trennzeichen (Leerzeichen) und nicht auf den Wörtern basiert, zählt dies lose Nicht-Leerzeichen-Zeichen wie Interpunktion als Wörter und hyphened Composites eine einzelne Wort. – XenoRo

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

Dies sollte es für Sie tun.

Siehe Demo für 5.

https://regex101.com/r/bT4kP8/2

+0

Vielen Dank. Ich werde es versuchen. Wirklich zu schätzen – KH2301

+0

Diese Regex hat Probleme. Wenn die Eingabe mit einem Nicht-Wort-Zeichen beginnt, schlägt die gesamte Regex fehl. Es kann auch nur Leerzeichen zwischen Wörtern behandeln und benötigt mindestens ein Leerzeichen zwischen allen Wörtern nach dem ersten Zeichen, wodurch der Ausdruck bei jedem Interpunktions- oder Bindestrich fehlschlägt. – XenoRo

+0

@AlmightyR Ich werde hinzufügen, wenn OP will, dass .... – vks