wie immer, wenn ich mich mit regulären Ausdrücken beschäftige, komme ich leider zu keiner Lösung. Eine Formulareingabe soll mittels preg_match() auf ihre Gültigkeit überprüft werden. In diesem Fall bedeutet gültig:
* Die Eingabe darf nur aus Klein- und Großbuchstaben incl. Ä, ä, Ö, ö, Ü, ü und ß bestehen.
* Die Eingabe muss aus _mindestens_ 3 dieser Zeichen bestehen.
* Wenn die Eingabe mehr als diese 3 Zeichen hat, _dann_ darf auch ein Leerzeichen vorkommen. Aber nur nach den ersten 3 Zeichen.
Darf ich vorweg fragen: "warum?"
Meine bisherige Lösung ist:
~[1]{3,}([A-Za-zÄäÖöÜüß]|\s)?$~
Das bedeutet für mich: Am Anfang mindestens 3 Zeichen ohne Leerzeichen, gefolgt von Zeichen und/oder Leerzeichen in keiner oder beliebiger Anzahl. Das ist aber offenbar falsch, weil zB. "Blaaa Blo" nicht gefunden wird.
^ Zeichenkettenanfang
Gefolgt von mindestens 3 Zeichen der Form [A-Za-zÄäÖöÜüß]
Optional gefolgt von
einem Zeichen der Form [A-Za-zÄäÖöÜüß] oder einem Whitespace-Zeichen
$ Zeichenkettenende
Du willst aber:
Zeichenketten Anfang
Exakt 3 Zeichen
Gefolgt von beliebig vielen oder keinen Zeichen der gegebenen Form
oder
gefolgt von _genau einem Leerzeichen_ (nicht Whitespacezeichen allgemein) welches von beliebigen Zeichen deine Form gefolgt wird (1 mal oder mehrfach)
Zeichenkettenende
Und meine Zusatzfrage: Könnte man den Ausdruck auch so erweitern, dass auch die letzten 3 Zeichen der Eingabe nur aus den Buchstaben bestehen darf? Also Leerzeichen nur, wenn die Eingabe mit mindestens 3 Buchstaben beginnt und mit mindestens 3 Buchstaben aufhört. Ginge das?
Ja sicher geht das.
A-Za-zÄäÖöÜüß ↩︎