Hola.
Una persona podría querer ingresar sus iniciales, algo común en el segundo nombre. No sé si tu sistema permite eso, pero en caso de que no exista un requerimiento específico, deberías permitir ingresar algo como "Juan J. Pérez".
Por otro lado, las mayúsculas no deberían ser un impedimento para ingresar datos, más bien es una preferencia sobre cómo almacenarlos para después mostralos. Cuando uno ingresa datos puede resultar muy molesto que el sistema te oblige a poner la primera letra en mayúsculas. Esto se resuelve muy fácilmente con
ucfirst() logrando el mismo resultado sin molestar al usuario.
Creo que bastaría con que controles de esta manera:
Código PHP:
preg_match('/^[a-zA-ZáéíóúÁÉÍÓÚñÑüÜ\s\.]*$/', $_POST['apellidos']);
Un saludo.