A parte il tuo problema, ma qui anche le esprssioni regolari non vanno:

var pattern =/[0-9,|, +, --, =, <, >, !=, (, ), %, @, #, *]/ ;

perchè le virgole e gli spazi?
Nelle espressioni regolari gli spazi non sono opzionali, ma significano esattamente: qui uno spazio.

Se la metti dentro parentesi quadre, non è come per le funzioni che devi separare gli "argomenti" con una virgola. Devi mettere (fra parentesi QUADRE) i caratteri in sequenza senza virgole o spazi, il trattino segnala invece un range di caratteri o alfabetici o numerici 0-9a-zA-Z o anche, semmai, a-d 3-6. In tal caso per segnalare invece il trattino come tale e non come indicante un range, gli premetti il carattere di escape: \-

perchè le parentesi attorno ad una virgola?

Cioè guarda quando metti i caratteri in una espressione regolare fra parentesi quadre, significa che cerchi un qualsiasi carattere che sia fra quelli messi.

Inoltre, non ti permette di trovare combinazioni di simboli come != ma solo simboli isolati
Se tu hai messo !=
con la idea di trovare: !=
no, ti ritornerà true per qualsiasi istanza ISOLATA di ! o di =

per cui, semmai

var pattern =/[0-9|+\-,<>!=%@#*]/ ;
Allora, l'istruzione utente.search(pattern) mi indica in quale posizione del testo mi trova uno dei caratteri presenti nel pattern oppure ritorna -1 se tutto va bene.
L'ho testato il codice giorni fa e, se mi ricordo bene, funziona benissimo.

Inoltre i campi msg1 ecc:
document.getElementById('msg1')

io nell' html non li vedo.
Ops, questo mi sono dimenticato di copiarlo...

Questo è nel file html appena sopra il form
codice:
<p id="msg1"></p>
<p id="msg2"></p>
<p id="msg3"></p>
<p id="msg4"></p>
e questo nel file css
codice:
p#msg1, p#msg2, p#msg3, p#msg4 {
	display:none;
	text-align: left;
}
Poi:
<button

no non esiste button nell' html del w3 esiste <input type="button"
un browser non è tenuto a interpretare correttamente il tag <button> perchè NON è nelle specifiche del w3

men che meno esiste un <button type="submit"
ma un
<input type="submit" value="cliccami" onclick="" />

Non è che non funziona su explorer, non dovrebbe funzionare da nessuna parte.
Come non esiste il tag button, e questo cos'è?