Gibt es ein Synonym für Sonderzeichen?

kornholi0

Grünschnabel
Hallo,
ich möchte mittels preg_match() prüfen ob ein string ein Sonderzeichen, ein Großbuchstabe, ein Kleinbuchstabe und eine Ziffer enthält. Wie vermutlich ersichtlich, geht es hier um die Prüfung eines Passworts. Für Alternativen ebenso dankbar.

Wie hat das pattern auszusehen?

Vielen dank im Voraus.
 
Hi,

vom Use-Case her willst du also Passwort Richtlinien umsetzen?
Ich bin da zwar nicht so der Fan davon, vorallem weil die ganzen Checks auf diversen Seiten mir immer wieder Bauchschmerzen bereiten (Warum muss ich unbedingt ein Sonderzeichen haben, reichen 20 Zeichen nicht aus? Warum muss unbedingt ein /$.-+ drin sen, ist denn ein * kein Sonderzeichen? Warum darf mein Passwort nicht länger als 12 Zeichen sein? usw.) Ich generiere mir meine Passwörter nach einem Muster, es kann halt sein dass hier 1-2x kein Sonderzeichen drin ist.

Zu deiner Frage:
Wie von sheel bereits angesprochen müsstest du da per Regex arbeiten. Sein Regex ist allerdings mMn zu restriktiv, dieser würde ja nur bestimmte Zeichen erlauben. Da du aber nur schauen willst, ob jede "Gruppe" mindestens einmal vorkommt, würde ich entweder getrennte Regex ohne ^$ nehmen, oder alles einen packen:
PHP:
$numbers = '/[0-9]+/';
$upper = '/[A-Z]+/';
$lower = '/[a-z]+/';
$other = '/[^a-zA-Z0-9]+/';

Der Vorteil einer getrennten Analyse wäre, dass du dem Benutzer direkt mitteilen kannst, welche Gruppe noch abgeht. Der $others oben müsste alle Sonderzeichen (also auch chinesische Zeichen) matchen.

Grüsse,
BK
 
Ich weiß, ich hab desselbe Bauchgefühl bei den ganzen checks. Ein Sonderzeichen muss tatsächlich nicht zwingend drin sein. Die referierende Datenbank wird auch nie die Kapazität erlangen dass 20 Zeichen für ein Passwort zu viel seien. Das macht der Nutzer aber nicht mit. Ebenso werden Sonderzeichen den Nutzer nerven.

Und, super danke für die Antwort. Gelöst ;)
 

Neue Beiträge

Zurück