Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne na hasło - 2 duże litery
_chris_
post 20.11.2013, 13:41:39
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 19.08.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Crozin
post 20.11.2013, 14:44:57
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
_chris_
post 20.11.2013, 14:53:12
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 19.08.2011

Ostrzeżenie: (0%)
-----


A ja potrzebuję to w javascript smile.gif
Go to the top of the page
+Quote Post
Crozin
post 20.11.2013, 15:04:05
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 06:09