Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne na hasło - 2 duże litery
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
_chris_
Witam wszystkich
Proszę o pomoc, nigdy z wyrażeń regularnych nie byłem mocny. Stworzyłem sobie takie wyrażenie:

/^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,12}$/

Sprawdza ono czy hasło ma od 6 do 12 znaków, dużą literę, cyfrę i znak specjalny. Nie bardzo wiem jak ugryźć zmianę polegającą na wymuszeniu wpisania dwóch dużych liter.

Z góry dzięki za pomoc.
Crozin
Nie wykorzystuj przy czymś takim pojedynczego, skomplikowanego wyrażenia. Na pierwszy rzut oka nie wiadomo co ono w ogóle może robić, mocno też ogranicza możliwość wyłapania konkretnego błędu.
  1. $password = 'abc';
  2. $error = null;
  3.  
  4. if (mb_strlen($password) < 6) {
  5. $error = '..';
  6. } else if (mb_strlen($password) > 1000) { // na prawdę chciałeś ustalić limit długości hasła na 12 znaków? W ogóle nie ma potrzeby ograniczania maksymalnej długości, ew. powinna dawać ona spory zapas.
  7. $error = ..
  8. } else if (mb_strlen(preg_replace('/[^\\Lu]/'U, '', $password)) < 2) { // usuń z hasła wszystko co nie jest wielką literą i sprawdź długość zwróconego ciągu
  9. $error = 'hasło musi zawierać przynajmniej dwie wielkie litery';
  10. } else if (preg_match('/\\d/', $password) === 0) {
  11. $error = 'hasło musi zawierać cyfrę';
  12. } else if (mb_strlen(preg_replace('/[^\\L\\d]/'U, '', $password)) < 1) { // usuń wszystko co nie jest literą bądź cyfrą
  13. $error = 'hasło musi zawierać znak specjalny';
  14. }
  15.  
  16. if ($error === null) {
  17. echo 'hasło ok';
  18. } else {
  19. echo 'złe hasło: ' . $error;
  20. }
Dodanie kolejnych wymogów dla hasła jest dużo prostsze, masz konkretne komunikaty błędów, a kod jest łatwiejszy w utrzymaniu.
_chris_
A ja potrzebuję to w javascript smile.gif
Crozin
Ops..., mój błąd - nie sprawdziłem działu. Ale zasada działania i sam kod będzie bardzo podobny. Jedynie z tego co pamiętam, JS-owskie wyrażenia nie mają wsparcia dla Unicode'owych grup znaków, ale i to powinieneś szybko przeskoczyć: https://www.google.com/search?q=javascript+...off&spell=1
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.