Espressione regolare per verifica password

andreto

Utente Attivo
5 Dic 2012
88
0
0
Ciao a tutti,
da giorni sto impazzendo :incazz2: per creare un'espressione regolare da inserire in preg_match che mi riesca a verificare una password con queste caratteristiche:

minimo 8 caratteri
minimo 2 lettere minuscole (anche non consecutive)
minimo 2 lettere maiuscole (anche non consecutive)
minimo 2 numeri (anche non consecutivi)

Sono riuscito a fare qualcosa ma l'accetta solo se i caratteri da verificare sono consecutivi e in ordine come nell'espressione.

Ho provato a cercare in rete ma ho trovato solo minino 8 caratteri, 1 lettera e 1 numero ma non 2.

Attendo con ansia un vostro aiuto

Ciao e grazie a tutti :byebye:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
per vedere se possono essere modificati posta quello che hai trovato.
anche se penso che dovrai farti una funzione apposita
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Io avevo trovato questo:

PHP:
((?=.*[0-9])(?=.*[a-zA-Z]).{8,})

Che verifica se la password inserita è lunga almeno 8 caratteri e contiene almeno 1 lettera e almeno 1 numero.

A me servirebbe:

Verifica se la password inserita è lunga almeno 8 caratteri e contiene almeno 2 lettere e almeno 2 numeri.

Non so se si può creare un'espressione nuova, modificare quella o se non si può proprio fare con le espressioni regolari.
Se si può fare mi piacerebbe sapere come per approfondire il mio studio :eek:

Nel frattempo mi sono divertito a creare qualcosa che svolga circa lo stesso compito:

1)
PHP:
$numero = $maiuscole = $minuscole = 0; 
for($i = 1; $i <= strlen($pass); $i++){ 
$carattere = substr($pass, $i-1, 1); 
$ascii = ord($carattere); 
if ($ascii >= 48 && $ascii <= 57) $numero++; 
if ($ascii >= 65 && $ascii <= 90) $maiuscole++; 
if ($ascii >= 97 && $ascii <= 122) $minuscole++; 
} 
echo 'Numeri: '.$numero."</br>"; 
echo 'Maiuscole: '.$maiuscole."</br>"; 
echo 'Minuscole: '.$minuscole;

2)
PHP:
for($i = 48; $i <= 57; $i++){ 
$numer += substr_count($pass,chr($i)); 
} 
for($i = 65; $i <= 90; $i++){ 
$maiuscol += substr_count($pass,chr($i)); 
} 
for($i = 97; $i <= 122; $i++){ 
$minuscol += substr_count($pass,chr($i)); 
} 
echo 'Numeri: '.$numer."</br>"; 
echo 'Maiuscole: '.$maiuscol."</br>"; 
echo 'Minuscole: '.$minuscol;

3)
PHP:
$num = $mai = $min = 0; 
foreach (count_chars($pass, 1) as $i => $val){ 
if($i >= 48 && $i <= 57) $num += $val; 
if($i >= 65 && $i <= 90) $mai += $val; 
if($i >= 97 && $i <= 122) $min += $val; 
} 
echo 'Numeri: '.$num."</br>"; 
echo 'Maiuscole: '.$mai."</br>"; 
echo 'Minuscole: '.$min;

4)
PHP:
$nume = $maiu = $minu = 0; 
$num = "0123456789"; 
$mai = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
$min = "abcdefghijklmnopqrstuvwxyz"; 
for($a = 1; $a <= strlen($pass); $a++){ 
$caratterepass = substr($pass, $a-1, 1); 
for($b = 1; $b <= strlen($num); $b++){ 
$caratterenum = substr($num, $b-1, 1); 
if($caratterepass == $caratterenum) $nume++; 
} 
for($c = 1; $c <= strlen($mai); $c++){ 
$caratteremai = substr($mai, $c-1, 1); 
if($caratterepass == $caratteremai) $maiu++; 
} 
for($d = 1; $d <= strlen($min); $d++){ 
$caratteremin = substr($min, $d-1, 1); 
if($caratterepass == $caratteremin) $minu++; 
} 
} 
echo 'Numeri: '.$nume."</br>"; 
echo 'Maiuscole: '.$maiu."</br>"; 
echo 'Minuscole: '.$minu;

Se non posso usare le RegEx, mi piacerebbe sapere quale di queste sarebbe meglio :byebye:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
dai un occhio a questo
eventalmente provalo
PHP:
<?php
/*
minimo 8 caratteri (e un massimo ?)
minimo 2 lettere minuscole (anche non consecutive)
minimo 2 lettere maiuscole (anche non consecutive)
minimo 2 numeri (anche non consecutivi)

se vuoi che la password sia solo alfanumerica a-zA_Z0-9 prima ti conviene pulirla
*/
function pulisci_pass($p){
	$pulita="";
	for($k=0; $k < strlen($p);$k++){
		if(($p[$k] >="a" && $p[$k] <="z") || ($p[$k] >="A" && $p[$k] <="Z") || ($p[$k] >="0" && $p[$k] <="9")){
			$pulita .= $p[$k];//ricostruisco con solo alfanumerici
		}
	}
	return $pulita;
}


function verifica_pass($p){
	$p=pulisci_pass($p);//questa se non ti serve la elimini o la commenti
	//verifico per prima cosa la lunghezza
	$lun=strlen($p);
	if($lun < 8){//se anche massimo es. ($lun < 8 || $lun > 16)
		return FALSE;
	}else{
		$min=0; $mai=0; $num=0;
		for($k=0; $k < $lun;$k++){
			if($p[$k] >="a" && $p[$k] <="z"){
				$min ++;
			}elseif($p[$k] >="A" && $p[$k] <="Z"){
				$mai ++;
			}elseif($p[$k] >="0" && $p[$k] <="9"){
				$num ++;
			}
		}
		if($min < 2 || $mai < 2 || $num < 2){
			return FALSE;
		}else{
			return $p;
		}
	}
}
//**test********
$pass="Fo8b5Hkk";
$pass_c=verifica_pass($pass);
if($pass_c){
	echo "la password $pass_c è corretta<br />";
}else{
	echo "la password $pass NON è corretta<br />";
}
$pass="Fo8*5Hkk";
$pass_c=verifica_pass($pass);
if($pass_c){
	echo "la password $pass_c è corretta<br />";
}else{
	echo "la password $pass NON è corretta<br />";
}
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
JackIlPazzo Espressione regolare per effettuare match con URI PHP 1
F espressione regolare per valore null PHP 8
A Espressione Regolare per verifica stringa PHP 14
JellyBelly Espressione Regolare per controllo Orario Javascript 2
D Select con espressione regolare PHP 4
C L'espressione regolare non funziona Javascript 0
I espressione regolare Javascript 1
J espressione regolare PHP 2
D Espressione regolare e redirect Apache 0
S Password espressione regolare PHP 3
S Espressione Regolare PHP 7
emanuelevt espressione regolare PHP 9
borgo italia espressione regolare con numeri PHP 2
borgo italia espressione regolare PHP 4
Z Espressione regolare PHP 1
M Espressione regolare con eregi PHP 1
F espressione regolare e IE 6 Javascript 4
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
M Valutazione espressione postfissa C/C++ 0
A Creare una classe espressione Java 1
Nik Espressione regolari max e min caratteri Javascript 12
D Scrivere un'espressione condizionale in Access Visual Basic 0
L espressione aritmetica PHP 5
asevenx regolare larghezza e opacità del testo div HTML e CSS 2
V Regolare il volume Flash 1
M Sintassi "personalizzata" per mysql workbench? MySQL 0
D Troviamo gratuitamente influencer per collaborazioni Annunci servizi di Social Media Marketing 0
MarcoGrazia Categorie per settore merceologico di Google SEO e Posizionamento 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
matteoraggi Local seo per un B&B di Forli SEO e Posizionamento 3
D Ical: Sto realizzando un gestionale per i miei appartamenti di casa vacanza PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
P Aiuto per rendere un Bot Telegram Privato PHP 1
V Query per una somma PHP 2
A Tabella con bottoni per aggiornamento record PHP 6
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 6
P Passare solo alcuni parametri a script per CSV PHP 0
A Consiglio per creazione sito web CMS (Content Management System) 0
A Regex per isolare link interni con rel noopener PHP 0
L form immagini per il database PHP 0
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 2
I [cerchiamo][retribuito] Grafico/a per stickers Offerte e Richieste di Lavoro e/o Collaborazione 0
R Cercarsi programmatore per GDR PBC Offerte e Richieste di Lavoro e/o Collaborazione 0
L Sessione e array per utenti PHP 0
A Sottoquery con group by per mese MySQL 0
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
V [Cerco] Socio e Sviluppatore per App PlacesFinder Offerte e Richieste di Lavoro e/o Collaborazione 0
M user agent per il download di api PHP 0
B Stringa sql per ricerca su più campi Database 1
Cosina Upload multiplo con invio allegati per email PHP 0

Discussioni simili