Holas, necesito un buen preg_match para que el nombre de usuario pueda contener solo letras de la "a" a la "z", que se puedan usar espacios, por supuesto, y el unico caracter especial que se pueda usar sea el guion medio "-". Tambien que un nombre no pueda ser todo en mayuscula, por ejemplo "CARLOS". Lo de la primera letra en mayuscula ya lo arregle con un ucfirst() pero como no estoy muy familiarizado con el preg_match no se como hacer el resto.
Por ejemplo, nombres que estan correctos:
Dark-Math
pepito (que pasa a ser Pepito)
Carlos el grande
Nombres que estan incorrectos:
JUAN
Dark_Math
Por ahora lo unico que pude hacer fue esto:
if (preg_match("/^[-A-Z\s]+$/i", $username)) {
El "\s" ya estaba ahi porque lo saque de otro script pero no estoy seguro de su funcion, si alguien me podria decir para que sirve le agradeceria.