Ik heb de volgende wachtwoord regels:

- minimaal 8 tekens
- minimaal 1 hoofdletter
- minimaal 1 kleine letter
- minimaal 1 cijfer
- mag een # of een ! bevatten

In wat ingekorte code

<?php

	function validatePassword($pwd) {
		if (!pregmatch('/[^A-Za-z0-9.#\\!-$]/', $pwd)){
			//
		}
		if (preg_match('/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*|.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[#|!]).*$/', $pwd)
			//
		}
	}
?>

Zou die laatste regex kunnen worden ingekort?
En (meer uit nieuwsgierigheid) zouden beide regexen gecombineerd kunnen worden?
Wordt die tweede regex uberhaupt wel uitgevoerd? ;-)

[size=xsmall]Toevoeging op 06/01/2015 08:41:14:[/size]

In de tweede regex kun je (?=.*[#|!]) ook laten matchen op een lege string. Het eerste deel van de alternation kan dan geheel vervallen:

        return preg_match('/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[#|!|]).*$/', $pwd);

Het was als voorbeeld, maar ik heb het even aangepast.

[size=xsmall]Toevoeging op 06/01/2015 08:53:41:[/size]

Bedankt Willem, had al een sterk vermoeden dat het korter kon, wist alleen niet hoe :-)

Reageren