Wyrażenie regularne do walidacji hasła w JavaScripcie i PHP

Wyrażenie regularne do haseł służy do sprawdzenia, jak zbudowane jest hasło, i do upewnienia się, że podane hasło jest dość mocne, by wytrzymać atak siłowy prowadzony przez boty. Wyrażenie regularne dla mocnego hasła Poniższe wyrażenie regularne sprawdza, czy hasło:

Wyrażenie regularne do walidacji hasła w JavaScripcie i PHP

Wyrażenie regularne do haseł służy do sprawdzenia, jak zbudowane jest hasło, i do upewnienia się, że podane hasło jest dość mocne, by wytrzymać atak siłowy prowadzony przez boty.

Wyrażenie regularne dla mocnego hasła

Poniższe wyrażenie regularne sprawdza, czy hasło:

  • Ma co najmniej 8 znaków. Zmienisz to, edytując {8,}

  • Zawiera co najmniej jedną wielką literę. Ten warunek usuniesz, kasując (?=.* ?[A-Z])

  • Zawiera co najmniej jedną małą literę. Ten warunek usuniesz, kasując (?=.* ?[a-z])

  • Zawiera co najmniej jedną cyfrę. Ten warunek usuniesz, kasując (?=.* ?[0-9])

  • Zawiera co najmniej jeden znak specjalny. Ten warunek usuniesz, kasując (?=.* ?[#?!@$%^&*-])

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

Wersja JavaScript

Funkcja przyjmuje hasło jako parametr i porównuje je z wyrażeniem regularnym. Jeśli nic nie pasuje, walidacja się nie udaje i funkcja zwraca false, jeśli dopasowanie się powiedzie, hasło ma właściwą postać i funkcja zwraca true. Oto funkcja JavaScript sprawdzająca hasło

javascript
/**
 * Walidacja hasła
 *
 * Jeśli hasło nie jest wystarczająco bezpieczne, zwróć false
 *
 * @param mdp
 * @return Boolean
 */
function validateMDP(mdp){
    var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
    return Reg.test(mdp);
}

Jak używać tej funkcji JavaScript

Najprościej wykorzystać ją wewnątrz instrukcji IF, tak jak poniżej.

javascript
if(validateMDP(mdp)){
     alert("Mot de passe  valide");
} else {
     alert("Mot de passe invalide");
}

See the Pen
Valider un email avec une expression régulière
by Damien Flandrin (@dam62500)
on CodePen.0

Wersja PHP

php
/*
 * walidacja hasła
 * @param $mdp
 */
 function isValidMDP($mdp)
 {
   return preg_match('/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/', $mdp)
 }

Wersja HTML

Pole możesz sprawdzić także w HTML, przed walidacją w PHP i JavaScripcie, atrybutem pattern: pozwala on pokazać stylami CSS, czy hasło pasuje do wyrażenia regularnego.

html
 <input
      name="mdp"
      type="text"
      pattern="(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}"
     />

See the Pen
Vérifier une date avec une expression régulière en HTML
by Damien Flandrin (@dam62500)
on CodePen.0

Uwagi o sprawdzaniu haseł wyrażeniem regularnym

Taka walidacja regexem jest lepsza niż nic, ale wszędzie tam, gdzie potrzebujesz wyższego poziomu bezpieczeństwa, sprawdzaj wpisane hasło również na liście haseł najczęściej używanych, takich jak:

  • .IOlZPf1
  • !A1o2e3r4
  • etc

HTMLJavaScriptPHP

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.