/^([a-z]|[0-9]|_|
\.)+$/
El . es un operador por lo que hay que poner \. para que considere el punto.
El operador . acepta cualquier simbolo menos el \n. Por eso te acepta las letras mayusculas
Yo lo pondría asi:
/^([a-z0-9\._](\s)?){5,28}$/
pero eso creo que acepta cadena vacia. Si es asi prueba con este:
/^(([a-z0-9\._])+(\s)?){5,28}$/
No me habia dado cuenta de lo del primer caracter. La definitiva sería asi:
/^[a-z\.](([a-z0-9\._])+(\s)?){4,27}$/
El primer caracter solo puede ser una letra minuscula o un puntos (solo has dicho que no podian ser guion bajo,espacios o numeros)
Otra solucion mejor seria:
/^[a-z\.]([a-z0-9\._](\s)?){4,27}$/
Perdona tantas expresiones pero lo he ido haciendo conforme escribía
Despues al pulsar el boton Submit llamarias a una funcion en javascript
:
Código PHP:
function usuarios(cadena){
var exp = /^[a-z.]([a-z0-9._](s)?){4,27}$/;
if(!exp.test(cadena))
alert(cadena);
}
Saludos.
PD: \s es para los espacios.