Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Controllo numerico stringa

    Buon giorno, sto cercando di creare un validatore per username e password.
    Purtroppo questo passaggio non funziona e non capisco perché:
    codice:
    var minlimit 	= 	8;
    var validUser	=	/^[a-z]*[0-9]{1}[a-z]*[0-9]?[a-z]*[0-9]?[a-z]*$/;
    
    
    else if(!validUser.test(document.register_form.user.value)){
    	alert("Lo username deve contenere da uno a tre numeri");
    	document.register_form.user.value="";
    	document.register_form.user.focus();
    	return;
    }
    Se digito queste stringhe:
    Andrea6,Andrea68,Andrea688 oppure Andrea6888
    Mi restituisce sempre l'alert.

    Sapete dirmi come mai?
    Forse la variabile validUser non è giusta?
    Grazie mille.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che le regular non sono il mio forte, tu hai usato la [a] di Andrea maiuscola mentre la regular ammette solo lettere minuscole
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    ciao andrea, ma per controllare se all'interno della stringa da un minimo di uno numero ad un massimo di 3, come bisogna fare?
    La regola sarebbe questa:
    -almeno una lettera maiuscola
    -almeno una minuscola
    -lunghezza minima 8 massima 12
    -da 1 a 3 numeri

    io non so come fare perché ste regular non le ho mai capite.....
    se puoi aiutarmi per favore...
    grazie mille

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Siamo in due a "litigarci" pertanto vedi se qui trovi spunti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    dubito che si possa fare con una sola RE.... e poi se vuoi dare dei messaggi d'errore devi comunque fare controlli separati.
    Le RE per le tue regole sarebbero:

    almeno una lettera maiuscola
    codice:
     /[A-Z]/g
    almeno una lettera minuscola
    codice:
    /[a-z]/g
    lunghezza minima 8 massima 12
    codice:
    /^.{8,12}$/g
    da 1 a 3 numeri
    codice:
    /^(\D*\d\D*){1,3}$/g

  6. #6
    per i controlli faccio in questo modo giusto?
    codice:
    var numMax			= /^(\D*\d\D*){1,3}$/g;
    if(!numMax.test(document.register_form.user.value)){//da 1 a 3 numeri
    		alert("Lo username deve contenere da uno a tre numeri");
    		document.register_form.user.value="";
    		document.register_form.user.focus();
    		return;
    	}
    grazie ancora

  7. #7
    toglietemi una curiosità perché sto diventando deficiente, oltre quello che già sono:
    controllo la username:
    codice:
    if (user == "") {
    		alert("Username Mancante - Campo obbligatorio!");
    		
    		return;
    	}
    	else if(!numMax.test(document.register_form.user.value)){//da 1 a 3 numeri
    		alert("Lo username deve contenere da uno a tre numeri");
    		return;
    	}
    	else if(!lenght.test(document.register_form.user.value)){//lunghezza minima 8 massima 12
    		alert("Lo Username digitato deve essere di 8 o al max di 12 caratteri alfanumerici!");
    		return;
    	}
    	else if(!lettMaiuscola.test(document.register_form.user.value)){//almeno una lettera maiuscola
    		alert("Deve contenere almeno una lettera maiuscola.");
    		return;
    	}
    	else if(!lettMinuscola.test(document.register_form.user.value)){//almeno una lettera maiuscola
    		alert("Deve contenere almeno una lettera minuscola.");
    		return;
    	}
    	else if(!filt.test(document.register_form.user.value)) {
    		alert("Caratteri non ammessi nello Username");
    		return;
    	}
    //controllo la password
    if (upassword1 == "") {
    		alert("Password Mancante - Campo obbligatorio!");
    		return;
    	}
    	else if(!numMax.test(document.register_form.upassword1.value)){//da 1 a 3 numeri
    		alert("Lo username deve contenere da uno a tre numeri");
    		return;
    	}
    	else if(!lenght.test(document.register_form.upassword1.value)){//lunghezza minima 8 massima 12
    		alert("La Password digitata deve essere di 8 o al max di 12 caratteri alfanumerici!");
    		return;
    	}
    	else if(!lettMaiuscola.test(document.register_form.upassword1.value)){//almeno una lettera maiuscola
    		alert("Deve contenere almeno una lettera maiuscola.");
    		return;
    	}
    	else if(!lettMinuscola.test(document.register_form.upassword1.value)){//almeno una lettera maiuscola
    		alert("Deve contenere almeno una lettera minuscola.");
    		return;
    	}
    	else if(!filt.test(document.register_form.upassword1.value)) {
    		alert("Caratteri non ammessi nella Password");
    		return;
    	}
    Ora mi dite, perché mi restituisce sempre, che la username vuole da 1 a 3 numeri, se la stringa che digito è la seguente:Proj3ctn?
    grazie ancora...

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ti garantisco che la RE è corretta, puo fare una prova così
    codice:
    var numMax = /^(\D*\d\D*){1,3}$/g;
    var user = 'Proj3ctn';
    if (!numMax.test(user)) {
    	alert('errato')
    }
    else {
    	alert('OK')
    }
    per capire cos'è che non va bisognerebbe vedere tutto lo script e il form
    tu all'inizio fai il controllo sulla variabile "user"
    e poi con RE controlli il campo del form "document.register_form.user.value"

  9. #9
    si funziona, ma adesso ho l'errore sulla password, ma non solo quello e mi spiego.
    Prendendo in riferimento lo script che ho postato, c'è sia il controllo sullo user che sulla pasw.
    codice:
    //controllo user
    if (user == "") {}
    else if(!numMax.test(document.register_form.user.value)){}
    else if(!lenght.test(document.register_form.user.value)){}
    else if(!lettMaiuscola.test(document.register_form.user.value)){}
    else if(!lettMinuscola.test(document.register_form.user.value)){}
    else if(!filt.test(document.register_form.user.value)) {}
    
    //controllo password
    if (upassword1 == "") {}
    /*else if(!numMax.test(document.register_form.upassword1.value)){}
    else if(!lenght.test(document.register_form.upassword1.value)){}
    else if(!lettMaiuscola.test(document.register_form.upassword1.value)){}
    else if(!lettMinuscola.test(document.register_form.upassword1.value)){}
    else if(!filt.test(document.register_form.upassword1.value)) {}*/
    Ora se io eseguo lo script come sopra, e cioè lasciando la sola if della password e commentando il resto, la validazione con questa stringa passata 'Proj3ctn' sia per user che per la pasw va bene.
    Se invece decommento per la pasw tutte le else if, si blocca al primo else if, quello del "La password deve contenere da uno a tre numeri".

    Se poi commento soltanto il primo else if, e decommento i restanti, purtroppo si ferma alla lunghezza consentita da 8 a 12.

    Quindi c'è qualcosa che non va.Ma dove?
    Di seguito il form:
    codice:
    <form name="register_form" id="register" action="javascript:void(0)" method="post">
    Username
    <input type="text" id="user" name="user" value="" size="25" maxlength="20" tabindex="17"/>
    Password
    <input id="upassword1" name="upassword1" value="" size="25" maxlength="20" type="password" tabindex="18"/>
    </form>
    Non riporto tutto il form perché è un po' lunghetto.

    Ho provato a stampare con un alert il valore passato a 'upassword1' e apparentemente sembra corretto e cioè 'Proj3ctn'.
    Quindi?
    Grazie grazie ancora per l'aiuto...

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ho provato il tuo codice e sembra che il modo in cui fai i controlli faccia invertire il risultato booleano degli oggetti regular expression. Che roba strana... (per le tue variabili e/o oggetti è meglio se eviti di usare nomi riservati come "length")

    Io ti consiglio di usare una funzione di supporto per controllare il formato di user e upassword1 visto che è lo stesso

    codice:
    function ControllaFormato(str) {
    	var re, msg='';
    	re = /[A-Z]/g;
    	if (!re.test(str)) msg += 'inserire almeno una lettera maiuscola\n';
    	re = /[a-z]/g;
    	if (!re.test(str)) msg += 'inserire almeno una lettera minuscola\n';
    	re = /^.{8,12}$/g;
    	if (!re.test(str)) msg += 'la lunghezza deve essere tra 8 e 12 caratteri\n';
    	re = /^(\D*\d\D*){1,3}$/g;
    	if (!re.test(str)) msg += 'inserire da 1 a 3 caratteri numerici\n';
    	return msg;
    }
    da usare nella tua funzione di controllo così
    codice:
    //controllo user
    	var msg=ControllaFormato(document.register_form.user.value);
    	if (document.register_form.user.value == "") {
    		alert("Username Mancante - Campo obbligatorio!");
    		return;
    	}
    	else if(msg!=""){
    		alert(msg);
    		return;
    	}
    	//controllo la password
    	msg=ControllaFormato(document.register_form.upassword1.value);
    	if (document.register_form.upassword1.value == "") {
    		alert("Password Mancante - Campo obbligatorio!");
    		return;
    	}
    	else if(msg!="") {
    		alert(msg);
    		return;
    	}

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.