888 Stimmen

Der Regex für das Passwort muss mindestens acht Zeichen enthalten, mindestens eine Zahl sowie sowohl Klein- als auch Großbuchstaben und Sonderzeichen.

Ich möchte einen regulären Ausdruck verwenden, um das folgende zu überprüfen:

Ein Passwort muss mindestens acht Zeichen lang sein, mindestens eine Zahl enthalten und sowohl Klein- als auch Großbuchstaben sowie Sonderzeichen wie #, ?, ! enthalten.

Es darf nicht Ihr altes Passwort enthalten oder Ihren Benutzernamen, "password" oder "websitename".

Und hier ist mein Validierungsausdruck, der für acht Zeichen einschließlich einem Großbuchstaben, einem Kleinbuchstaben und einer Zahl oder einem Sonderzeichen gilt.

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

Wie kann ich es für ein Passwort muss acht Zeichen lang sein, einschließlich eines Großbuchstabens, eines Sonderzeichens und alphanumerischer Zeichen schreiben?

3voto

Demo:

function password_check() {
  pass = document.getElementById("password").value;
  console.log(pass);
  regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
  if (regex.exec(pass) == null) {
    alert('invalid password!')
  }
  else {
    console.log("valid");
  }
}

3voto

Masoud Punkte 192
var strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
var mediumRegex = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})");

Am besten für JavaScript

3voto

Raj Punkte 345

Das hat bei mir funktioniert:

(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[@$!%*#?~(&)+=^_-]).{8,}

3voto

Stuepfnick Punkte 71

Ich würde verwenden:

^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[\W_]).{8,}$

Die meisten Antworten gehen davon aus, dass Sie eines ihrer vordefinierten Sonderzeichen verwenden, aber ich würde sagen, es ist besser, wenn jedes Sonderzeichen verwendet werden kann, wenn es nicht a-zA-Z0-9 ist, also könnten Sie schreiben: [^a-zA-Z0-9], aber es ist kürzer, "Not Word" zu verwenden: \W, was äquivalent zu: [^a-zA-Z0-9_] ist - aber natürlich wollen Sie, dass der Unterstrich _ als Sonderzeichen betrachtet wird, also fügen Sie ihn einfach hinzu, dann enden Sie mit: [\W_]

Ein sehr nützliches und hilfreiches Tool zum Erstellen, Modifizieren oder Testen von Regex ist regex101: https://regex101.com

3voto

Stefano Punkte 1566

Ich habe hier viele Probleme gefunden, also habe ich meine eigene erstellt.

Hier ist sie in all ihrer Pracht, mit Tests:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$

https://regex101.com/r/DCRR65/4/tests

Dinge, auf die Sie achten sollten:

  1. verwendet nicht \w, weil das auch _ enthält, was ich testen möchte.
  2. Ich hatte viele Probleme beim Anpassen von Symbolen, ohne das Ende der Zeile anzupassen.
  3. Spezifiziert Symbole nicht explizit, das liegt auch daran, dass verschiedene Regionen unterschiedliche Symbole auf ihren Tastaturen haben können, die sie verwenden möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X