webentwicklung-frage-antwort-db.com.de

Regex für nicht leer und nicht für Leerzeichen

Ich versuche, eine Regex zu erstellen, die false zurückgibt, wenn das String-Muster Leerzeichen enthält oder leer ist. Bisher habe ich das

[^\s] 

Ich denke, das wird sicherstellen, dass die Zeichenfolge kein Leerzeichen enthält, aber ich bin nicht sicher, wie sie auch überprüfen kann, ob sie leer ist. Jede Hilfe wäre dankbar.

27
medium

/^$|\s+/ Wenn dies übereinstimmt, gibt es Leerzeichen oder ist leer.

37
Jan.

Die meisten regulären Ausdrucks-Engines unterstützen Escape-Sequenzen "Gegenteil". Das heißt, für \s (Weißraum) gibt es seinen Gegenabschnitt \S (Nicht-Weißraum).

Hiermit können Sie mit ^\S+$ prüfen, ob mindestens ein Zeichen ohne Leerzeichen vorhanden ist.

PCRE für PHP hat mehrere dieser Escape-Sequenzen .

14
Linus Kleen

Nach meinem Verständnis möchten Sie eine nicht leere und nicht leere Zeichenfolge verwenden, sodass die oberste Antwort das Gegenteil tut. Ich schlage vor:

(.|\s)*\S(.|\s)*

- Dies entspricht einer beliebigen Zeichenfolge, die mindestens ein Nicht-Leerzeichen enthält (der \S in der Mitte). Vor und nach kann eine beliebige Zeichen- oder Leerzeichenfolge (einschließlich neuer Zeilen) - (.|\s)* - vorangestellt werden.

Sie können es mit einer Erklärung auf https://regex101.com/ versuchen.

11
Tony

Am Ende verwendete ich etwas, das der akzeptierten Antwort ähnelte, mit geringfügigen Modifikationen

(^$)|(\s+$)

Erklärung durch den Expresso

 Wählen Sie aus 2 Alternativen (^ $) 
 [1] Eine nummerierte erfasste Gruppe ^ $ 
 Zeilenanfang ^ 
 Zeilenende $ 
 [2] Eine nummerierte erfasste Gruppe (\ s + $) 
 Leerzeichen, eine oder mehrere Wiederholungen\s + 
 Zeilenende $ 
5
oleksii

Ein bisschen spät, aber hier ist ein Regex, den ich gefunden habe, der 0 Treffer für leere oder weiße Felder zurückgibt:

/^(?!\s*$).+/

Sie können dies unter regex101 testen.

1
Truchainz