Wie mit einem einzelnen Raum insgesamt nicht nur einen einzigen Raum mit regulären Ausdrücken
Hier ist, was ich derzeit habe, wird dieses match alphanumerische Zeichen und Raum:
^[a-z0-9\s]+$
Was ich möchte zu tun ist, um sicherzustellen, dass es nur ein Spiel, wenn es nicht mehr als ein (1) Platz. Die oben genannten match "Dies ist ein test", aber ich würde nur wollen, dass es zu entsprechen, wenn der Eingang "in Diesem isatest", oder "T hisisatest". Sobald es mehr als einen Raum insgesamt wird es nicht mehr übereinstimmen.
Idealerweise würde es auch nicht passen, wenn der Raum führende oder nachfolgende, aber das ist nur Sahnehäubchen.
EDIT:
Die Idee ist, dass diese verwendet werden, um zu überprüfen, Konto-Namen nach Konto-Erstellung. Der Konto-name darf nur einen lateinischen Buchstaben, einer Zahl und einem einzigen Raum. Jedoch könnte es werden, alle Buchstaben oder alle zahlen, der Raum ist nicht erforderlich. Dies ist definitiv über Raum und keine Leerzeichen.
- von "nicht mehr als 1 Leerzeichen" meinst du 0 oder 1 ? , ie Sie wollen auch zu entsprechen "Thisisatest" ?
- Ja, wie in meinem ersten edit, den Benutzernamen könnte "Thisisatest" it doesn ' T haben einen Platz, aber wenn es dann funktioniert, sollte es nicht mehr als einen einzigen Raum. Also das ist wirklich mindestens 0 und nicht mehr als 1.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst reinigen Sie den Benutzernamen durch trimmen führende und nachfolgende Leerzeichen. Regex mit possessive Quantoren:
Ermöglichen atmost ein Leerzeichen dazwischen.
^[a-zA-Z0-9]+\s?[a-zA-Z0-9]+$
Wird es ermöglichen, genau ein Leerzeichen zwischen
^[a-zA-Z0-9]+\s[a-zA-Z0-9]+$
EDIT1:
Oben genannten Lösungen nicht akzeptieren einzelnen Zeichenketten.
Den unter-Lösungen entspricht auch einzelne Zeichenfolgen
^[a-zA-Z0-9]+([ ][a-zA-Z0-9]+)?$
Es ist ziemlich leicht, einfach aufzubauen, es in Stücke.
Einen oder mehrere alphanumerische Zeichen, dann wird eine optionale Gruppe, bestehend aus einem einzigen Raum, gefolgt von ein oder mehr alphanumerische Zeichen. (BTW,
\s
entspricht einem whitespace-Zeichen an, kein Leerzeichen). Das heißt, es tatsächlich entspricht[ \t\n]
. Was tun Sie eigentlich wollen?)$
auf dem Boden und ohne, dass es regex ist wahrscheinlich gar nichts zu tun nützlich. (Ich kann mir nicht so Recht, was Sie sagen, von dem Ergebnis, aber.) Der testprintf 'aaa bbb\na b a b\n a b a \nabab\n ba b\nav d \n ac\nde \n' | perl -lne 'print if /^[a-z0-9]+(?: [a-z0-9]+)?$/'
nicht das richtige für mich ist.Sollte so einfach wie diese. Entspricht 0 oder 1 Leerzeichen in der Mitte des Textes. Obwohl, es passt tabs.
Versuchen:
(Edited: Ihr follow-up schlägt vor, Sie möchten prüfen, ob ein Raum eher als für Leerzeichen).
foo(?=bar)
finden Sie allefoo
's, gefolgt vonbar
. Auf der anderen Seite(?!bar)foo
passen allefoo
's bedingungslos. Selbst diejenigen, vorangestelltbar