Regex ohne führende zahl
Tim Schuhmann
- programmiertechnik
0 Tim0 MudGuard
0 misterunknown0 MudGuard
hallo,
folgenden regex habe ich:
~[1]{1}[äöüß\w\d]{2,14}$~i
Auf das Muster soll zutreffen, dass am Anfang keine Zahl steht. Um das zu bewerkstelligen, habe ich ^ am Anfang und dann [äöüß\w]{1} stehen. Also alle deutschen Buchstaben in Groß und Kleinschreibung sind erlaubt. Das muss am Anfang einmal vorkommen! Danach dürfen 2 bis 14 Zeichen von den deutsche Buchstaben und Zahlen vorkommen. Sie dürfen auch mit einer Zahl enden.
if(preg_match('~^[äöüß\w]{1}[äöüß\w\d]{2,14}$~i','12234jasdj'))
{
echo 'Not Good!';
}
Insgesamt also zwischen 3 und 15 Buchstaben.
Allerdings gibt er jetzt "Not Good" aus. Warum? Wie muss der Ausdruck richtig lauten? Wenn ich das mit Zahlen mache, funktioniert es ja auch, siehe:
^[1-9]{1}[\d]{0,10}$
Hier darf z.B. keine Null am Anfang stehen und kann bis zu 11 Zeichen lang sein. Ist selbst dieser Ausdruck am Ende Falsch?
Bitte um Aufklärung :(
Danke,
Tim
äöüß\w ↩︎
Oha,
jetzt hab ichs mit a-z probiert, dann funktioniert es. dann hab ich auf einer anderen quelle geschaut, \w beinhaltet auch zahlen, oh oh. Schlechtes tutorial gehabt. Da stand es sind dann buchstaben.
danke trotzdem,
Tim
Hi,
dann hab ich auf einer anderen quelle geschaut, \w beinhaltet auch zahlen,
Zahlen nein, Ziffern ja.
cu,
Andreas
Moin,
Auf das Muster soll zutreffen, dass am Anfang keine Zahl steht.
Wenn ich das jetzt richtig verstanden habe, sollte doch auch einfach folgendes funktionieren:
^[^0-9]\w{2,14}$
Grüße Marco
Hi,
Auf das Muster soll zutreffen, dass am Anfang keine Zahl steht.
Wenn ich das jetzt richtig verstanden habe, sollte doch auch einfach folgendes funktionieren:
^[^0-9]\w{2,14}$
Also alle deutschen Buchstaben in Groß und Kleinschreibung sind erlaubt. Das muss am Anfang einmal vorkommen!
Dieser Teil ist aber verletzt, denn [^0-9] erlaubt alles außer Ziffern, also auch Satzzeichen, Klammern, Sternchen, Raute, usw.
\w{2,14} kombiniert mit einem negative Lookahead auf [0-9] wäre ne Möglichkeit.
cu,
Andreas