2012-04-11 18 views
1

Ich brauche eine Regex, die Benutzer ein Passwort in ein Feld einfügen können. Aber die einzige zulässige Regex sind [A-Za-z0-9] ok, aber auch "Leerzeichen", ".", "_", "-". Wie kann es möglich sein, die speziellen Zeichen, die ich aufgelistet habe, aber nicht zu zwingen, Benutzer zu verwenden, dass? Auf der anderen Seite, verbieten Sie alle anderen Sonderzeichen.Regex in PHP über Passwort-Feld

Ist es möglich?

Mit diesem Code prüfe ich die Qualität des Passwortes, aber für mein Ziel Ursache nicht ausreichend ich die Sonderzeichen nicht verwalten:

"/^[A-Za-z0-9\.\-\_]+$/" 
:

  else if ($check_strength && (!preg_match("/[0-9]/", $newpwd) || !preg_match("/[^A-Za-z0-9]/", $newpwd))) { 
      $rcmail->output->command('display_message', $this->gettext('passwordweak'), 'error'); 
     } 

ich mein Problem mit diesem gelöst haben

+0

Sie bereits wissen, wie die [Zeichenklasse] (http://www.regular-expressions.info/charclass.html) funktioniert? Fügen Sie einfach die zusätzlichen Zeichen hinzu. – mario

+1

Außerdem: Es gibt keinen Grund für Sie, Kennwörter zurückzuhalten. Sie können zulässige Benutzernamen beschränken, aber Passwörter sind nicht Ihre Angelegenheit. Es verbessert nicht die Benutzerfreundlichkeit und ganz sicher nicht die Sicherheit. – mario

+0

Das ist die einfache Lösung für mich: "/^[A-Za-z0-9\.\-\_]+$/" – user840718

Antwort

0
echo preg_match("/^[A-Za-z0-9 ._-]+$/", '-a. s_d'); // 1 

oder mehr abgekürzt:

echo preg_match("/^[\w .-]+$/", '-a. s_d'); // 1 
+0

Ok das funktionierte für mich. Aber können Sie mir den Raum erklären? Wo ist es in der abgekürzten Version? – user840718

+0

nach dem '\ w' und vor dem' .' – webbiedave

1

Wenn ich richtig verstehe, diese Regex würde das tun:

/^[a-zA-Z \._\-]+$/ 
0

Sie sollten das Kennwort des Benutzers mit einem regulären Ausdruck nicht „check“. Ich rate Ihnen, die Stärke mit Metriken zu überprüfen und sicherzustellen, dass es als "stark genug" angesehen wird (zum Beispiel von Metriken look at this site).

Auf diese Weise kann der Benutzer ein beliebiges Zeichen in seinem Passwort haben. Sie sollten sich nicht wirklich darum kümmern, welche Zeichen der Benutzer in seinem Passwort wählt, und Sie werden das trotzdem hashen, so dass es Sie nicht betrifft.


, was hier gesagt ist Ihre regex:

[\w .-]+