Expressaõ regular

Ele entra no corpo do if não iporta a string que getNovaSenha() devolver??? O que acontece??? :?

if(! Pattern.matches("a-z", getNovaSenha()) ) { errors.add(org.apache.struts.action.ActionErrors.GLOBAL_ERROR, new ActionError("trocaSenha.novasenha.formato")); } else if (! Pattern.matches("{4,15}", getNovaSenha()) ) { errors.add(org.apache.struts.action.ActionErrors.GLOBAL_ERROR, new ActionError("trocaSenha.novasenha.comprimento")); }

Não seria isso:

if(! Pattern.matches("[a-z]", getNovaSenha()) ) {

Ambos os padrões estão errados.

Se a nova senha tem de ser alfabética, e apenas com letras minúsculas (é isso que você quer?) então o primeiro padrão é:

“[a-z]+”

Se você quer checar se está entre 4 e 15 caracteres:

“[a-z]{4,15}”

Ainda não funcionou…

[quote=thingol]Ambos os padrões estão errados.

Se a nova senha tem de ser alfabética, e apenas com letras minúsculas (é isso que você quer?) então o primeiro padrão é:

“[a-z]+”

Se você quer checar se está entre 4 e 15 caracteres:

“[a-z]{4,15}”

[/quote]

opppss…como sempre o thingol tem razão, falta de atenção minha, desculpe…
:oops:

Valeu colegas, agora funcionou:

if(! Pattern.matches("[a-zA-Z0-9]+", getNovaSenha()) ) { errors.add(org.apache.struts.action.ActionErrors.GLOBAL_ERROR, new ActionError("trocaSenha.novasenha.formato")); } else if (! Pattern.matches("[a-zA-Z0-9]+{4,15}", getNovaSenha()) ) { errors.add(org.apache.struts.action.ActionErrors.GLOBAL_ERROR, new ActionError("trocaSenha.novasenha.comprimento")); } 8)

‘[a-zA-Z0-9]+{4,15}’ ainda está errado (como é que não deu uma “exception”?

O correto é

“[a-zA-Z0-9]{4,15}”

sem o sinal de “+”.

O sinal de “+” é uma abreviatura para “{1, infinito}”