2016-07-12 4 views
0

Ich benutze Petersilie js für die Validierung der Eingabe und ich benutze die Daten-Petersilie-Muster, die mir erlaubt, in regelmäßigen Ausdruck übergeben.Regex zur Validierung der Zeichenfolge für drei nicht Leerzeichen

Ich versuche, die Zeichenfolge zu überprüfen, um sicherzustellen, dass es mindestens drei nicht weiße Leerzeichen enthält. Im Folgenden finden Sie Strings, die ungültig oder gültig sein sollten.

valid: 1 2 b 
invalid: 1 b [space] 
valid: 3x c 1 3n 
invalid: 1  b 

[Leerzeichen] = ist nur ein weißer Raum, nur es in diesem Beispiel verwendet, weil es am Ende der Schnur war, in allen anderen Beispielen, die Abstände zwischen den Zeichen repräsentiert gibt es weiße Räume.

I versucht:

\S{3} 

ohne Erfolg

und

[\S{3}] 
+1

Auch wenn Sie nicht stark auf regex mehr Schrägstriche hinzufügen möchten, sollten Sie SO Regeln auf weiß [Wie fragen] (http://stackoverflow.com/help/how-to-ask). Darüber hinaus sind Ihre Anforderungen nicht klar: 3 '\ S' am Ende oder irgendwo innerhalb der Zeichenfolge? –

+1

'\ S (?: \ S * \ S) {2}' – sln

Antwort

4
\S{3,} 

\ S {3} entsprechen alle nicht-weißen Leerzeichen [^ \ r \ n \ t \ f]

Quantifizierer: {3} Zwischen 3 und beliebig oft, so oft wie möglich, zurück geben je nach Bedarf [gierigen]

z.B. abc oder abc def

https://regex101.com/r/gO6sT3/1


Das ist, wie von Wiktor Stribiżew wies darauf hin, nuraufeinanderfolgende Zeichen übereinstimmt. Wenn Sie meinen, „kann die Eingabe einer beliebigen Anzahl von Whitespaces haben, überall, solange es mindestens drei nicht-Leerzeichen überall“ dann vielleicht:

.*\S.*\S.*\S.* 

Alles oder nichts, nicht-witespace, alles oder nichts, Nicht-Whitespace, etc.

z a b c oder ab c oder abc

https://regex101.com/r/wY0kL4/1

auch alles und alles an der Stelle sehen: http://www.regular-expressions.info/

+2

Dies entspricht nicht '1 2 3' –

+1

@ WiktorStribiżew Alles Teil des Rennspaß für 'einfache' Fragen. Ich habe eine Alternative hinzugefügt. – TessellatingHeckler

+1

Gut. Nur '. * \ S. * \ S. * \ S. *' wird viel Rückverfolgung haben. In diesen Fällen würde ich lieber einen Ansatz ohne Regex verwenden. Oder eine einfachere Trennung mit '\ s +', Join und überprüfen Sie die Anzahl der Zeichen. –

1

"[^\s][^\s][^\s]+"
[] enthält eine Zeichenklasse.
ist ein Leerzeichen.
^ funktioniert irgendwie wie eine logische nicht.
Die + Fänge einem oder mehreren der vorherigen Zeichen
Sie müssen möglicherweise auf spezielle Escape-Zeichen je