tl; dr
Fügen Sie einfach ein Leerzeichen in Ihre Charakterklasse ein .
^[a-zA-Z0-9_ ]*$
Nun, wenn Sie streng sein wollen ...
Das obige ist nicht genau richtig. Aufgrund der Tatsache, dass *
dies null oder mehr bedeutet , würde es allen folgenden Fällen entsprechen, die normalerweise nicht übereinstimmen würden:
- Eine leere Zeichenfolge, "".
- Eine Zeichenfolge, die ausschließlich aus Leerzeichen besteht.
- Eine Zeichenfolge, die mit Leerzeichen führt und / oder verfolgt, "Hello World".
- Eine Zeichenfolge, die mehrere Leerzeichen zwischen den Wörtern "Hello World" enthält.
Ursprünglich dachte ich nicht, dass es sich lohnt, auf solche Details einzugehen, da OP eine so grundlegende Frage stellte, dass es so schien, als sei Strenge kein Problem. Jetzt, da die Frage jedoch an Popularität gewonnen hat, möchte ich sagen ...
Was in meinem Geschmack (ohne Verwendung \w
) bedeutet:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(Bitte stimmen Sie @stema trotzdem zu.)
Einige Dinge, die Sie zu dieser Antwort (und zu @ stema) beachten sollten:
Wenn Sie mehrere Leerzeichen zwischen Wörtern zulassen möchten (z. B. wenn Sie versehentliche doppelte Leerzeichen zulassen möchten oder wenn Sie mit kopiertem Text aus einer PDF-Datei arbeiten), fügen Sie +
nach dem Leerzeichen ein Leerzeichen hinzu:
^\w+( +\w+)*$
Wenn Sie Tabulatoren und Zeilenumbrüche (Leerzeichen) zulassen möchten, ersetzen Sie das Leerzeichen durch \s+
:
^\w+(\s+\w+)*$
Hier schlage ich die +
Standardeinstellung vor, da beispielsweise Windows-Zeilenumbrüche aus zwei Leerzeichen in Folge bestehen \r\n
, sodass Sie +
beide Zeichen abfangen müssen.
Funktioniert immer noch nicht?
Überprüfen Sie, welchen Dialekt regulärer Ausdrücke Sie verwenden. * In Sprachen wie Java müssen Sie Ihren Backslashes entkommen, dh \\w
und \\s
. Bei älteren oder mehr Basissprachen und Dienstprogramme, wie sed
, \w
und \s
nicht definiert sind, so dass sie so schreiben , mit Charakterklassen, zB [a-zA-Z0-9_]
und [\f\n\p\r\t]
, respectively.
* Ich weiß, dass diese Frage markiert istvb.netAber basierend auf mehr als 25.000 Ansichten denke ich, dass nicht nur diese Leute auf diese Frage stoßen. Derzeit ist es der erste Treffer bei Google für den Suchbegriff, das Leerzeichen für reguläre Ausdrücke .