ti garantisco che la RE è corretta, puo fare una prova così
codice:
var numMax = /^(\D*\d\D*){1,3}$/g;
var user = 'Proj3ctn';
if (!numMax.test(user)) {
	alert('errato')
}
else {
	alert('OK')
}
per capire cos'è che non va bisognerebbe vedere tutto lo script e il form
tu all'inizio fai il controllo sulla variabile "user"
e poi con RE controlli il campo del form "document.register_form.user.value"