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.
/^$|\s+/
Wenn dies übereinstimmt, gibt es Leerzeichen oder ist leer.
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 .
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.
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 $
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.