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.046
150
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.046
150
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
felino Lubuntu 18.04 Requisiti per applicazione console .net core 7.0 Linux e Software 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
E Aiuto per query PHP 8
E Il punto di riferimento italiano per Trailers cavalli Discussioni Varie 0
F CERCO Servizi SEO di Qualità per Agenzie di Servizi SEO e Posizionamento 3
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
R Plugin di base per WordPress WordPress 0
D [COMPRO/CERCO] GUEST POST o scambio link per sito di Spiritualità ed Esoterismo. Vendere e Acquistare pubblicita' online 0
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
M Analisi sito per pulire codice inutile HTML e CSS 1
Paolo69 Risolto reCAPTCHA v2 per ASP Classic ASP 0
M Hosting VPS per server di gioco Minecraft Hosting 0
N Grazie per il benvenuto Presentati al Forum 0
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
R Filtri e plugin per photoshop Photoshop 0
AkTaRuS DIsabilitare il tasto destro tranne che per code e pre Javascript 1
0 [Retribuito] Cercasi programmatore per GdR PbC Offerte e Richieste di Lavoro e/o Collaborazione 0
A Adempimenti per magazine on line Leggi, Normative e Fisco 0
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
I aiuto urgente per thunderbird Posta Elettronica 0
A Web master per semplice sito web Offerte e Richieste di Lavoro e/o Collaborazione 2
M [Cerco][Gratuito] Artista/designer per creazione grafica gioco di società Offerte e Richieste di Lavoro e/o Collaborazione 0
M Un saluto per cominciare Presentati al Forum 1
N MAX() + ADD_DATE - per update su Mysql MySQL 0

Discussioni simili