• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

RegEx für Benutzername

J

j-l-n

Guest
Wenn es um RegExes geht, verstehe ich leider so gut wie nichts. Habe mich damit auch bisher sehr wenig beschäftigt.
Ich würde gerne prüfen, ob ein Benutzername valid ist. Und zwar darf er nur aus Buchstaben von a-z, den Ziffern 0-9, sowie Punkt, Unterstrich und Leerzeichen bestehen.
Ich möchte also erreichen:
PHP:
$username = "User.010"; // -> true
$username = "User mit_Unterstrich"; // -> true
$username = "verbotener +Name"; // -> false

Folgendes habe ich versucht, klappt aber nicht:
PHP:
if (preg_match("/^[a-zA-Z0-9_. ]$/", $username)){
echo "passt so.";
}
else{
echo "passt nicht.";
}
 
Einschränkungen für Benutzernamen bringt nur Ärger, so meine Erfahrung. Warum sollen z.B. Jürgen, Bärbel oder René keine zulässigen Benutzernamen sein?
 
Ich dachte, weil hier auch keine Umlaute zugelassen sein sollen.
In Perl könnte man das übrigens so machen:
Code:
if ($user =~ /[^a-z0-9 _.]/) { say "Min. 1 unerlaubtes Zeichen enthalten"; }
Das beginnende Dach und das schließende Dollar müssen bei dir weg.
Außerdem muss man den Punk escapen, weil er ein Regex Kommando darstellt.
Das Dach innerhalb der eckigen Klammern besagt, dass es sich um eine Umkehrung handelt, also alle Zeichen außerhalb der folgenden Zeichengruppe.
 
Zuletzt bearbeitet:
Na, weil es sonst nicht zieht:
Code:
#!/usr/bin/perl
use 5.010;
my $var = 'Hallöchen';
if ($var =~ /[^a-z0-9 _.]/i) {say "unerlaubte Zeichen enthalten in ".__LINE__}
if ($var =~ /^[^a-z0-9 _.]$/i) {say "unerlaubte Zeichen enthalten in ".__LINE__}
Ausgabe bei mir:
unerlaubte Zeichen enthalten in 4

nein, aber du musst den - escapen
Stimmt, innerhalb eckiger Klammern kann das für den Punkt entfallen. Und das Minus war ein Tippfehler, sollte der Unterstrich sein, habs korrigiert.

@Julian: Hinten das i steuert, dass Groß- und Kleinbuchstaben zulässig sind.
 
Hab ich doch gezeigt.
was du gezeigt hast ist mir egal, ich beziehe mich auf den OP
du kannst nicht sagen das ist bei ihm falsch, nur weil es bei dir mit umgedrehter logik nicht geht

Keine Ahnung, wovon du redest.
PHP:
$username = "verbotener +Name"; // -> false  
if (preg_match("/^[a-zA-Z0-9_. ]+$/", $username)){
echo "passt so.";
}
else{
echo "passt nicht.";
}

PHP:
$username = "verbotener +Name"; // -> false  
if (preg_match("/[a-zA-Z0-9_. ]+/", $username)){
echo "passt so.";
}
else{
echo "passt nicht.";
}
 
Was kommt bei den PHP Beispielen raus? Ich hab kein PHP. Im übrigen sind beide Beispiele falsch, von einem giergen + war nie die Rede.
Du kannst das nicht so umstellen, bis das passt, nur um mir zu widersprechen.
 
Zuletzt bearbeitet:
Einschränkungen für Benutzernamen bringt nur Ärger, so meine Erfahrung. Warum sollen z.B. Jürgen, Bärbel oder René keine zulässigen Benutzernamen sein?
Ich hätte als Benutzername gerne
PHP:
$username = "\t\n\t";
;)

Spaß beiseite. Ich würde das auch nicht einschränken. Warum auch? Es gibt keinen technischen Grund da nicht alle Unicode-Zeichen zuzulassen. Wenn jemand sich das Leben schwer machen will und sich "♣·¬☺" nennen will - seine Entscheidung.

@mikdoe und hesst: ich doch völlig egal ob man eine positive oder negative Suche macht... solange das Ergebnis das Gleiche ist.
 
@mikdoe und hesst: ich doch völlig egal ob man eine positive oder negative Suche macht... solange das Ergebnis das Gleiche ist.
Klar. Aber für manch einen scheint es nicht akzeptabel zu sein, dass es mehrere Lösungen gibt, man muss dann dem anderen umgedrehte Logik vorwerfen und wenn man merkt, dass man aus der Nummer selbst nicht mehr rauskommt bringt man schnell was ganz Neues ein, damit die eigene Lösung wieder passt :)
Das Verhalten kommt mir irgendwie bekannt vor....
 
Hallo \t\n\t
ich doch völlig egal ob man eine positive oder negative Suche macht... solange das Ergebnis das Gleiche ist.
hab ich das bestritten? ich hab nur gefragt, warum die anfangs und endezeichen wegmüssen. und das müssen sie nicht.


Klar. Aber für manch einen scheint es nicht akzeptabel zu sein, dass es mehrere Lösungen gibt
nein? nagut, du musst es ja nicht akzeptieren

man muss dann dem anderen umgedrehte Logik vorwerfen
ich habe dir keine umgedrehte Logik vorgeworfen, sondern, daß du behaupet hast die anfangs und endezeichen müssen weg

und wenn man merkt, dass man aus der Nummer selbst nicht mehr rauskommt
lol, kommt schon wieder mal jemand aus einer sache nicht raus,
gleich wirst du wieder beweisen und mit zitaten belegen
ach, da fällt mir doch der spruch vom schlauen ein...

bringt man schnell was ganz Neues ein, damit die eigene Lösung wieder passt :)
ich hab was neues gebracht? was denn?

Das Verhalten kommt mir irgendwie bekannt vor....
ach, bin ich etwa persöhnlich geworden?
 
Schluß jetzt ihr beiden!
Die Frage zu der RegExp ist mit zwei möglichen Wegen gelöst.

Bleibt nur noch die Frage, warum Julian überhaupt den Benutzernamen einschränken will.
 
Zurück
Oben