pattern html5 non va con asterisco

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Codice:
<input type="password" id="password-1" name="password" style="width:400px" placeholder="Password *" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required onchange="this.setCustomValidity(this.validity.patternMismatch ? 'min 8 caratteri con almeno un carattere maiuscolo, uno minuscolo e una cifra' : ''); if(this.checkValidity()) info.conferma_password.pattern = this.value;" >

<input type="password" id="conferma_password" name="conferma_password" style="width:400px" placeholder="Conferma Password *" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Inserire nuovamente la password' : '');" required oncopy="return false" onpaste="return false" oncut="return false">
deve verificare:
MIN 8 CARATTERI
ALMENO 1 MAIUSCOLO
ALMENO 1 MINUSCOLO
ALMENO 1 NUMERO
fin qui funziona tutto, ma se vorrei aggiungere alla password un ASTERISCO (non obbligatorio) non va, ho il messaggio "INSERIRE UN VALORE NEL FORMATO RICHIESTO" e quindi non procede all'invio del form, come posso fare?
Grazie
 

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Grazie ZORRO
ho provato come suggerito da te ma niente, cioè:
Codice:
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*?$
 

zorro

Utente Attivo
20 Ott 2014
234
10
18
ROMA
Prova questo:

PHP:
$pattern = '/^(?=.{8,}$)(?=.*?[a-z])(?=.*?[0-9])(?=.*?\*?).*$/';
 

djjunior

Utente Attivo
24 Lug 2004
95
1
8
il problema resta, se metto l'asterisco il campo di conferma password mi va in errore e non fa proseguire l'invio del form
 

zorro

Utente Attivo
20 Ott 2014
234
10
18
ROMA
io ho provato con PHP e funziona, sia con che senza asterisco.
Mi mandi lo script dell'intero form, che faccio qualche prova?
 

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Ti posto lo script completo che sto utilizzando:
Codice:
<script>

function checkPasswordMatch() {
    var password = $("#password-1").val();
    var confirmPassword = $("#conferma_password").val();

    if (password != confirmPassword)
        $("#msg").html("Le password non coincidono").css("color","red");
   else
        $("#msg").html("").css("color","red");
}

$(document).ready(function () {
   $("#password-1 #conferma_password").keyup(checkPasswordMatch);
});


</script>

<FORM id="info" name="info" method="POST" action="PAG.asp" >
<input type="text" name="email" style="width:400px" placeholder="E-mail *" onkeyup="javascript:this.value=this.value.toLowerCase();" pattern="[^@\s]+@[^@\s]+\.[^@\s]+" required  oninvalid="this.setCustomValidity('Indicare e-mail ')" onchange="this.setCustomValidity('')" value=""><br>
<input type="password" id="password-1" name="password" style="width:400px" placeholder="Password *" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required  onkeyup="checkPasswordMatch();" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Min 8 caratteri con almeno un carattere maiuscolo, uno minuscolo e una cifra' : ''); if(this.checkValidity()) info.conferma_password.pattern = this.value;"> <br>
<input type="password" id="conferma_password" name="conferma_password" style="width:400px" placeholder="Conferma Password *" pattern="" required  onkeyup="checkPasswordMatch();" onchange="this.setCustomValidity(this.validity.patternMismatch ? 'Reinserirsci la password correttamente' : '');" oncopy="return false" onpaste="return false" oncut="return false"><div id="msg"></div><br>
</FORM>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="js/hideShowPassword.min.js"></script>
<script>
$('#password-1').hidePassword(true);
$('#conferma_password').hidePassword(true);
</script>

<input type="submit" value="Invia" id="BUTTON" name="B1">
Grazie per l'aiuto