Во-первых, у вас может быть проблема с кодировкой, поэтому äöüÄÖÜ зарегистрированы как недействительные.Я не пользователь PHP, поэтому я не могу ответить на ваш вопрос напрямую, но вам может помочь эта страница .Кроме того, использование соответствующих классов символов может работать лучше, чем явное написание всех соответствующих букв.Увы, это, вероятно, также зависит от конфигурации кодирования.
Во-вторых, вам нужно пробел в вашем регулярном выражении, поэтому
/^[0-9a-z A-ZäöüÄÖÜ_\-']+$/ // note space after a-z
должно работать.Обратите внимание, что я написал в предыдущем абзаце об использовании классов символов.\w
может быть достаточно вместо a-zA-ZäöüÄÖÜ