Non capisco completamente la tua regexp.
Perche` inizi la quadra con ^ ? vuoi escludere tutti quei caratteri?
E perche` usi il metodo exec, che potrebbe dare problemi in qualche browser?
Perche` ci sono caratteri senza backslash davanti (^ $)?
Perche` permetti caratteri oltre quelli della quadra? (manca inizio e fine stringa)
Io farei diversamente:
codice:
var controllalogin = new RegExp("^[0-9a-zA-Zàáâèéêìíîòóôùúûñç_~!\|@\-§\^\$]+$");
if(controllalogin.test(document.form1.elements[0].value) {
return true }
else{
alert ("Hai utilizzato dei caratteri non permessi per il login. Correggi e riprova.");
return false;
}