codice:
<script type="text/javascript" language="javascript">
//un esempio usando un'unica RE (quella di Vindav)
function PasswordValida(strPassword) {
	var re = /^(?=(.*\d){3,})(?=(.*[a-z]){4,})[a-z\d]{7,}$/i
	return re.test(strPassword);
}
//e una con 3 RE che dice cosa c'è che non va
function ValiditaPassword(strPassword) {
	var msg = '';
	//carattere diverso da lettere e numeri (lettere minuscole e maiuscole)
	var reNumeriLettere = /[^a-z\d]/i;
	//caratteri dalla a alla z in tutta la stringa (minuscole e/o maiuscole)
	var reLettere = /[a-z]/gi;
	//caratteri numerici in tutta la stringa
	var reNumeri = /\d/g;
	var numeroLettere = (strPassword.match(reLettere) ? strPassword.match(reLettere).length : 0);
	if (numeroLettere < 4) msg += '- bisogna inserire almento 4 caratteri alfaberici
\n';
	var numeroNumeri = (strPassword.match(reNumeri) ? strPassword.match(reNumeri).length : 0);
	if (numeroNumeri < 3) msg += '- bisogna inserire almento 3 caratteri numerici
\n';
	if (reNumeriLettere.test(strPassword)) msg += '- sono presenti caratteri non consentiti
\n';
		return msg
	}
</script>

<form>
	Password<input type="text" type="password" name="password" />

	<input type="button" value="test semplice" onclick="document.getElementById('divMsg').innerHTML=(PasswordValida(this.form.password.value) ? 'valida' : 'non valida');" />
	<input type="button" value="test con spiegazioni" onclick="msg=ValiditaPassword(this.form.password.value);document.getElementById('divMsg').innerHTML=(msg=='' ? 'valida' : msg);" />
	<div id="divMsg"></div>
</form>