Es que estás aplicando mal las expresiones regulares, porque estás buscando que la cadena empiece sí o sí por "Mod-", "mod-", "ADM" o "adm" (por cierto, debiste colocar los valores opciones entre paréntesis, no entre corchetes) y luego debe continuar un espacio seguido de cualquier caracter que debe aparecer cero o más veces y todo ese subconjunto debe aparecer una o más veces.
Ahora bien, supongo que lo que estás tratando de evitar es que el texto ingresado no sea de cualquiera de estas formas:
Cita: Mod-ejemplo
mod-ejemplo
ADMejemplo
admejemplo
ejem plo (con el espacio en medio)
Si fuera así, puedes trabajarlo con dos grupos de expresiones regulares, para que no te compliques.
Código Javascript
:
Ver originalvar expresion1 = /^(Mod-|mod-|Adm|adm)(.*)$/,
expresion2 = /(.+)\s(.+)?/;
if (expresion1.test($("#username").val()) || expresion2.test($("#username").val())){
alert("MAL");
}
else{
//Continuas con las instrucciones
}
En la primera expresión, buscas cualquiera de los 4 valores indicados y seguido de cualquier caracterer, es decir, no se permitirán textos como los que mostré más arriba, mientras que la segunda expresión, buscas cualquier caracter, de una a más ocurrencias (apariciones), seguido de un espacio y cualquier otro caracter (incluidos los propios espacios, para que no se puedan poner dos o más espacios y saltarse la validación), de uno a más, pero esta segunda parte es opcional, es decir, buscará "ejem plo" como "ejem ". Buscas ambas expresiones en el texto, de darse la coincidencia en cualquiera de ambas, se muestra la alerta de advertencia, caso contrario, sigues con las instrucciones de tu aplicación.
Saludos