Preciso de uma expressão regular para validar senha conforme abaixo:
A senha precisa ser no padrão: ipe@1234 (letras, caracteres especiais e números)
Estou usando essa abaixo, só que não valida, da erro:
<p:password id="passwordInput" class="password" size="35" maxlength="20" value="#{funcionarioBean.novaSenha}" required="true" validatorMessage="Senha válida somente no padrão ipe@1234."> <f:validateRegex pattern="((?=.\\d)(?=.[a-z])(?=.[A-Z])(?=.[@#$%]).{6,20})"/> </p:password>
Sempre aparece a mensagem “Senha válida somente no padrão ipe@1234”, mesmo usando a senha ipe@1234.
Mathob
Abril 12, 2016, 5:28pm
#2
Eu usei o seguinte padrão ((\\d)*([a-z])*([A-Z])*([@#$%])*){6,20}
e funcionou, pelo menos para os testes que eu fiz. Ele aceita um número 0 ou mais vezes, uma letra 0 ou mais vezes… com tamanho entre 6 e 20.
O meu ainda dá erro… segue o xhtml, poderia verificar por favor?
<ui:define name="conteudo"> <p:growl id="frmLoginGeral" /> <div id="redefinir"> <h:form> <input type="hidden" id="idFunc" name="idFunc" value="#{param['id']}" /> <div class="senha"> <div class="row2"> <p:outputLabel class="nova_senha" value="Crie uma nova senha" /> <br /> <br /> </div> <div class="row_center"> <div class="row3"> <p:outputLabel class="label_senha" value="Crie sua nova senha: " /> <br /> <p:password class="password" size="35" maxlength="20" value="#{funcionarioBean.novaSenha}" required="true" validatorMessage="Senha válida somente no padrão ipe@1234."> <f:validateRegex pattern="((\\d)*([a-z])*([A-Z])*([@#$%])*){8,20})"/> </p:password> * <br /> <br /> <p:outputLabel class="label_senha" value="Confirme sua nova senha: " /> <br /> <p:password class="password" size="35" maxlength="20" value="#{funcionarioBean.novaSenhaConfirma}" /> * <br /> <br /> </div> <h:commandButton class="botao" value="Confirmar" actionListener="#{funcionarioBean.gerarSenha}" update=":frmLoginGeral" /> </div> </div> </h:form> </div> </ui:define>
Mathob
Abril 13, 2016, 3:52pm
#4
o seu está com um fecha parenteses a mais, o último caractere
terei e mesmo assim não passa, só da senha inválida.
(([a-z])([A-Z]) ([@#$%])(\d) ){8,20})
Eu inverti os dígitos para serem verificados após os caracteres especiais. A RegExp é lida da esquerda para direita, atendendo a cada grupo que foi especificado.
Mathob
Abril 14, 2016, 9:54pm
#7
Essa expressão verifica se tem entre 8~20 caracteres que podem ser a-z, A-Z, especiais ou numéricos. Não importa a ordem em que aparecem e sim a quantidade.
Agora deu certo das duas formas… Vlw galera.