Hallo Mario,
hier gibt es ein paar Sachen die Du korrigieren müsstest:
Das "d" sucht hier nicht nach Ziffern, sondern nach dem Buchstaben "d" - für die Suche nach Ziffern fehlt ein Backslash davor - also etwa so:
Du prüfst, ob die Länge der Eingabe nicht 4 ist und ob dein Regex-Pattern in der Eingabe gefunden wurde - nur wenn beides zutrifft, gibst du den Fehler aus.
Wenn also zum Beispiel die Eingabe nicht mit deinem Regex-Pattern, übereinstimmt, wird nie ein Fehler ausgegeben (da beide Bediungungen für die Fehlermeldung vorausgesetzt werden)
Ich würde hier - wenn du schon Regex einsetzt - gleich das ganze damit prüfen, dies kannst Du folgendermassen umsetzen:
- mit einem "^" am Anfang des Patterns sagst Du, dass das gesuchte am Anfang des Strings sein muss
- mit einem "$" am Ende des Patterns sagst Du, dass das gesuchte am Ende des Strings sein muss
- das "+" sagt dass mindestens eins, maximal unendlich viele Zeichen übereinstimmen müssen - Du kannst hier auch eine konkrete Zahl angeben (da Du ja genau 4 Ziffern willst), indem Du stattdessen "{4}" angibst.
Da du so alle Bedingungen (nur Ziffern, exakt 4 Zeichen) über Regex prüfen kannst, müsstest Du dann nur noch prüfen, ob es auch einen Treffer gab - das würde dann also schlussendlich etwa so aussehen:
Gruss
Stefan