und es wird als gültig erkannt obwohl in diesem Beispiel "[a-zA-Z0-9$&%\*\+\-/]{1,12}" Leerzeichen verboten sind.
Weil es auch gültig ist.
Zitat:
Ebenso wird die Längenangabe ignoriert
Nein wird sie nicht. In diesem String gibt es mindestens einmal ein paar Zeichen, welche deinem Suchmuster entsprechen.
https://regex101.com/r/giS6xE/1
Du prüfst nur ob
in dem String etwas mit der Maske übereinstimmt und nicht ob es der ganze String ist.
In diesem Fall kannst du ganz einfach ^ vor und $ hinter das Suchmuster einfügen, also "^[a-zA-Z0-9$&%\*\+\-/]{1,12}$" .