Frage

Auf meiner Registrierungsseite muss ich die Benutzernamen als alphanumerische bestätigen nur, aber auch mit optional Unterstrichen. Ich habe kommen mit diesem:

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^\w+$/',$str);
}

Welche Ordnung scheint zu funktionieren, aber ich bin kein Experte regex! Hat jemand ein Problem erkennen?

War es hilfreich?

Lösung

Die tatsächliche angepasst Zeichen von \w hängen von der locale die verwendet wird:

  

Ein „Wort“ -Zeichen ist ein beliebiger Buchstabe oder Ziffer oder der Unterstrich, dass jeder Charakter ist, den Teil eines Perl sein kann „ Wort “. Die Definition von Buchstaben und Ziffern wird durch PCRE der Zeichentabellen gesteuert und kann variieren, wenn länderspezifische Anpassungsstattfindet. Zum Beispiel in der „fr“ (Französisch) locale, einige Zeichencodes größer als 128 sind für Umlaute verwendet, und diese werden angepasst durch \ w.

So sollten Sie besser explizit angeben, welche Zeichen Sie zulassen möchten:

/^[A-Za-z0-9_]+$/

Auf diese Weise kann nur alphanumerische Zeichen und den Unterstrich.

Und wenn Sie Strich nur als Verknüpfungszeichen zulassen wollen und wollen erzwingen, dass der Benutzername mit einem Zeichen aus dem Alphabet beginnen müssen:

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top