Por que não funciona?

Oi pessoal.
Estou fazendo esta validação de senha:

[code]function checkPassword (nmSenha) {

 if ((nmSenha.value.length < 6) || (nmSenha.value.length > 8)) {
    alert("A senha deve ter entre 6 e 8 caracteres");
 }

 else if (!((nmSenha.search(/(a-z)+/)) && (nmSenha.search(/(A-Z)+/)) && (nmSenha.value.search(/(0-9)+/)))) {
    alert("A senha deve conter pelo menos 1 letra maiúscula,1 minúscula e 1 número");
 }  

} [/code]
No meu form chamo ela assim:

<TD><html:password property="nmSenha" maxlength="8" onchange="checkPassword(this);"  /></TD>

Só que só funciona a primeira parte,passa batido no else if.
O que pode estar errado?

Coloca um else, para o else if e verifica se entra dentro dele.
=]

Oi Fabio.
Desculpe,não entendi,como assim?

Faz assim oh:

function checkPassword (nmSenha) {
 
 try{

     if ((nmSenha.value.length < 6) || (nmSenha.value.length > 8)) {
        alert("A senha deve ter entre 6 e 8 caracteres");
     }
   
     else if (!((nmSenha.search(/(a-z)+/)) && (nmSenha.search(/(A-Z)+/)) && (nmSenha.value.search(/(0-9)+/)))) {
        alert("A senha deve conter pelo menos 1 letra maiúscula,1 minúscula e 1 número");
     } else{
            alert("ENTROU AQUI.");
    }

}catch(e) {
   alert(e);
}
 
 }   

Oi Fabio.
Fiz o teste,aparece uma pop-up com esta mensagem:
[object error]
Sabe o que significa?

Arquiteto, eu testei aqui, e está dizendo que a função search não existe.
Eu pelo menos nunca ouvi falar dela pra String no javascript.
Ela realmente existe?
pois está dando erro na chamada desta função.