![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 17.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Ma ktoś może jakiś sprawdzony sposób na sprawdzenie hasła pod warunkiem że zawiera: - małą literę - wielką literę - cyfrę od 0 do 9 - znak specjalny Gdzieś czytałem że można użyć w wyrażeniu znak "?=" ale nie wiem zbytnio jak go zastosować. Dziękuje i pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 17.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
a takie wyrażenie jest prawidłowe?
Działać działa ale może ktoś mi powiedzieć jak przerobić je na wyrażenie z tym znaczkiem na końcu "/i " |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wow
![]() ![]()
[[:alnum:]] to klasa znaków alfanumerycznych. Jeśli jednak chcesz żeby hasło mogło mieć polskie znaki musisz użyć funkcji mb_ereg. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 17.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
EDIT: Sorry działa, dziękuje bardzo
Ten post edytował xeveot 25.03.2009, 06:46:09 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Szukałem odpowiedzi na bardzo podobne pytanie i znalazłem ten post, niestety podane rozwiązanie jest błędne, ponieważ:
- zwraca true gdy na końcu ciągu jest znak specjalny, a nie dowolne jego wystąpienie. - warunek {6,16} zwraca true jeżeli wystąp iminimum 6 razy kombinacja: dowolny znak alfanumeryczny potem znak specjalny. Nie udało mi się niestety napisać takiego jednego wyrażenia, które by sprawdzało wszystkie podane warunki na raz. Ja zrobiłem to za pomocą czterech oddzielnych wyrażeń:
Zapewne da się to bardziej uprościć tylko pytanie czy jest sens tracić na to czas. -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 17.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ja również szukałem odpowiedzi na bardzo podobne pytanie i również znalazłem ten post
![]() Stworzyłem coś takiego:
Ten post edytował Conrado81 17.04.2010, 20:00:06 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ale w ogóle sprawdziłeś to?
To zupełnie nie działa, zwraca TRUE w przypadku prostego hasła np "piwo" To wyrażenie jest spełnione gdy na początku ciąg znaków znajdą się minimum 3 znaki składające się na słowo (włącznie ze znakami podkreślenia). Zupełnie nie o to chodzi przecież. Da się to zrobić jednym wyrażeniem:
Nie ja to wymyśliłem (niestety) ![]() -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 13.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mógłby ktoś objaśnić wyrażenie
? Gdyż szukam wszędzie i nigdzie nie mogę zobaczyć co oznacza np "?=" oraz ".*" Rozumiem, że hasło może składać się z: -dużych liter -małych liter -cyfr 0-9 -znaków "!@#$%^&*()_+|-" Ale tak jak napisałem nie wiem po co jest na początku i na końcu "/" oraz ten znak zapytania ze znakiem równości i kropka z gwiazdką Z góry dzięki. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Rozumiem, że hasło może składać się z:... Nie może tylko musi. Cytat Ale tak jak napisałem nie wiem po co jest na początku i na końcu "/" Wyrażenia regularne ujmuje się w znaki odwrotnego ukośnika, który pełni rolę znaku ograniczającego. Czyli początek i koniec wyrażenia. Cytat szukam wszędzie i nigdzie nie mogę zobaczyć co oznacza np "?=" oraz ".*" Tutaj mamy zastosowany pewien trick z "górnej półki". Normalnie: ? - oznacza zero lub jedno wystąpienie * - oznacza zero lub więcej wystąpień . - oznacza dowolny jeden znak Ale w naszym przypadku te symbole mają inne znaczenie. (?= ) oznacza sprawdzenie dopasowania ale bez przesuwania się wzdłuż ciągu znaków. Wyrażenie jest sprawdzane ale dalsze matchowanie startuje od tego samego miejsca, jakby tego wcale nie było. Takie patrzenie w przod, bez ruszania sie z miejsca. Tak wiec (?=.*[A-Z]) sprawdza, czy jest duza litera gdzies dalej, ale jestesmy nadal przed nia i mozemy sprawdzic czy jest tez cos innego. Ta sztuczka pozwala na sprawdzenie wystąpień różnych znaków bez sprawdzania kolejności ich wystąpień. Czyli zarówno "A1b" jest poprawne jak i "Ba1". -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jak chcesz mniej więcej złapać jak budować RegExy, to tu masz w miarę sensownie podaną dokumentację z przykładami.
-------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 27.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym odświeżyć temat, wyrażenie podane przez unloco jak najbardziej działa
chciałbym je zmodyfikować tak aby hasło składało się minimum z 8 a maksimum z 30 znaków. niestety podane przeze mnie rozwiązanie nie działa i nie bardzo wiem jak sobie z tym poradzić. Ten post edytował MatBlo 24.11.2010, 10:31:09 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jedna uwaga - a-z nie obejmuje polskich ogonków. Jeśli chcesz aby były dozwolone to musisz je dopisać do wyrażenia.
-------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 27.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak wiem wystarczy zamiast A-Z wpisać A-Ż, ale nie z tym mam problem, w każdym razie dzięki za zwrócenie uwagi.
edit. Problem rozwiązany: Ten post edytował MatBlo 24.11.2010, 12:45:25 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Działa dla min. 8 znaków, ale nie ma sprawdzania czy hasło przekracza 30 znaków.
Cytat wyrażenie podane przez unloco jak najbardziej działa A ktoś pisał że nie działa? Dla ścisłości: unloco tylko wkleił wyrażenie ze wcześniejszego posta -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 129 Pomógł: 4 Dołączył: 21.02.2004 Skąd: z domu Ostrzeżenie: (0%) ![]() ![]() |
Kiedys takie cos napisalem... Prosta funkcja zwracajaca true w przypadku, gdy haslo spelnia warunki lub false jezeli nie. Ten post edytował gsk 24.11.2010, 22:05:10 -------------------- pomoglem wcisnij przycisk "pomogl" - dzieki...
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tą "prostą funkcję" można zastąpić jedną linijką wyrażenia regularnego:
Podane wyrażenie zwraca TRUE jeżeli hasło ma więcej niż 8 znaków ale nie więcej niż 30 znaków oraz jeżeli zawiera: - jedną małą literę i - jedną dużą literę i - jedną cyfrę i - jeden znak specjalny -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
Tą "prostą funkcję" można zastąpić jedną linijką wyrażenia regularnego:
Podane wyrażenie zwraca TRUE jeżeli hasło ma więcej niż 8 znaków ale nie więcej niż 30 znaków oraz jeżeli zawiera: - jedną małą literę i - jedną dużą literę i - jedną cyfrę i - jeden znak specjalny Witam Dobre wyrażenie. Ma ktoś może takie, które wymaga: - małej litery - dużej litery - cyfry bądź znaku specjalnego - limitu 6-20 znaków Z góry dzięki za pomoc. |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ma ktoś może takie, które wymaga: - małej litery - dużej litery - cyfry bądź znaku specjalnego - limitu 6-20 znaków To znaczy hasło jest poprawne jeżeli zawiera przynajmniej jedną małą literę i przynajmniej jedną duża literę i przynajmniej jedną cyfrę lub znak specjalny? Czyli hasło: Aaaaa1 jest poprawne? Długość to sprawdzisz funkcją strlen(). Ja preferuję zrobić to oddzielnie żeby napisac użytkownikowi że ma za krótkie lub za długie hasło a nie pisać "niepoprawne" ale nie wiadomo o co dokładnie chodzi. -------------------- Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
To znaczy hasło jest poprawne jeżeli zawiera przynajmniej jedną małą literę i przynajmniej jedną duża literę i przynajmniej jedną cyfrę lub znak specjalny? Czyli hasło: Aaaaa1 jest poprawne? Długość to sprawdzisz funkcją strlen(). Ja preferuję zrobić to oddzielnie żeby napisac użytkownikowi że ma za krótkie lub za długie hasło a nie pisać "niepoprawne" ale nie wiadomo o co dokładnie chodzi. Jest tak jak piszesz. Może być też Aaaaa@ i też będzie poprawnie. EDIT: Kod '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9!@#$%^&*()_+|-]).{6,20}$/'
Ten post edytował id4 25.06.2014, 10:07:26 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 06:34 |