Что вы можете сделать, это использовать положительный прогноз, чтобы указать длину 25 - 999, а также утверждать, что существует 2 последовательных [a-z]
Затем сопоставьте класс вашего персонажа [a-zA-Z0-9äöü,.' -]+
с разрешенными предметами, добавив к нему a-z и A-Z.
^(?=.{25,999})(?=.*[a-z]{2})[a-zA-Z0-9äöü,.' -]+$
^
Начало строки
(?=.{25,999})
Позитивный взгляд, утверждаю 25 - 99 символов
(?=.*[a-z]{2})
Позитивный взгляд, утверждаю 2 раза [a-z]
[a-zA-Z0-9äöü,.' -]+
Соответствует любому из перечисленных 1+ раз
$
Конец строки
Regex demo | Php demo
Например (я сделал строки длиннее, чтобы учесть минимальную длину 25)
$strings = [
"This is a text with John Doe",
"This is a text with Max Müstermann ",
"This is a text withJohn-Frank' Doe.",
"This is a text with John/Doejlkjkjlk",
];
$pattern = "/^(?=.{25,999})(?=.*[a-z]{2})[a-zA-Z0-9äöü,.' -]+$/";
foreach ($strings as $string) {
if (preg_match($pattern, $string)) {
echo "Ok ==> $string" . PHP_EOL;
} else {
echo "error" . PHP_EOL;
}
}
Результат
Ok ==> This is a text with John Doe
Ok ==> This is a text with Max Müstermann
Ok ==> This is a text withJohn-Frank' Doe.
error