Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript] Przynajmniej jedna cyfra lub jedna litera w min. 5 znakach
Forum PHP.pl > Forum > Przedszkole
kusiu
Witam

Mam problem z wyrażeniami regularnymi
Otóż tak jak w temacie, chce walidować hasło, kóre jest 5 znakowe oraz ma przynajmniej jedną cyfrę bądź jedna literę

Oto moj kod:
  1. <?php
  2. if(strlen($FPASS)>=&& preg_match( "/^[a-zA-Z]{1,}[0-9]{1,}+$/", $FPASS ))
  3. echo "OK";
  4. ?>


a jak by to tez bylo JS?

Z gory dziekuje exclamation.gif
Shili
Wyrażenie regularne na tak prostym poziomie jest takie samo i w php i w js.

Swoją drogą działa Ci to jak chciałeś?
Spróbuj sobie hasła :"32aba, raczej nie przyjmie, mimo że ma jedną literę lub cyfrę i więcej niż 5 znaków.
Kod
[a-zA-Z-0-9]
To już przepuści Ci wszystkie hasła w których jest przynajmniej jeden znak bądź cyfra, ale... pod warunkiem, że nie ma tam ą, ę itd.
kusiu
Cytat(Shili @ 13.08.2008, 12:00:32 ) *
Wyrażenie regularne na tak prostym poziomie jest takie samo i w php i w js.

Swoją drogą działa Ci to jak chciałeś?
Spróbuj sobie hasła :"32aba, raczej nie przyjmie, mimo że ma jedną literę lub cyfrę i więcej niż 5 znaków.
Kod
[a-zA-Z-0-9]
To już przepuści Ci wszystkie hasła w których jest przynajmniej jeden znak bądź cyfra, ale... pod warunkiem, że nie ma tam ą, ę itd.


przeciez tu przepuszcza teraz jak wpiszesz nawet same litery...

ma ktos inny pomysl?

no i oczywisice cyfry i znaki obojetnie gdzie moga byc , wazne tylko zeby byla jedna cyfra badz jedna litera w 5 znakach...
Shili
Cytat
Otóż tak jak w temacie, chce walidować hasło, kóre jest 5 znakowe oraz ma przynajmniej jedną cyfrę bądź jedna literę

Cytat
wazne tylko zeby byla jedna cyfra badz jedna litera w 5 znakach...


Zdecyduj się, bo już nie wiem o co chodzi. I opisz możliwie najdokładniej, najlepiej z przykładami, jeśli trudno jest to jednoznacznie sprecyzować.
kusiu
Cytat(Shili @ 13.08.2008, 12:11:36 ) *
Zdecyduj się, bo już nie wiem o co chodzi. I opisz możliwie najdokładniej, najlepiej z przykładami, jeśli trudno jest to jednoznacznie sprecyzować.


przynajmniej jedna litera badz jedna cyfra w 5 znakach....

czyli np:

2haslo
has3lo
haslo4
1111h
2f331
kavka
Cytat(kusiu @ 13.08.2008, 14:15:59 ) *
przynajmniej jedna litera badz jedna cyfra w 5 znakach....

czyli np:

2haslo
has3lo
haslo4
1111h
2f331


Jak dla mnie podany przykład nie jest adekwatny do zdania "przynajmniej jedna litera badz jedna cyfra w 5 znakach" winksmiley.jpg
Przykład odzwierciedla zdanie: przynajmniej jedna litera i jedna cyfra ;]

To tak na marginesie...

@kusiu
Panie też tu zaglądają...
Shili
Jednak nie umiesz sprecyzować. Do problemu który po raz wtóry opisałeś masz moją odpowiedź kilka postów wyżej.

Do Twojego problemu którego nie potrafisz sprecyzować dalej mam jeszcze kilka pytań: czy tylko litery i cyfry są dozwolone? Bo przykłady pokazują, że tak.
golaod
Najlepiej przepuścić 2 razy przez preg_match,(jeden sprawdza czy wystapila litera,drugi czy cyfra) ot cala filozofia smile.gif
kusiu
Cytat(Shili @ 13.08.2008, 12:20:52 ) *
Jednak nie umiesz sprecyzować. Do problemu który po raz wtóry opisałeś masz moją odpowiedź kilka postów wyżej.

Do Twojego problemu którego nie potrafisz sprecyzować dalej mam jeszcze kilka pytań: czy tylko litery i cyfry są dozwolone? Bo przykłady pokazują, że tak.


No Panowie mam malo czasu dlatego nie nie pisze dokladnie... w pierwszym poscie napisalem o do mi chodzi a przeciez latwo skuma co co mi chodiz na tym przykladzie:

2haslo
has3lo
haslo4
1111h
2f331

no i tak tylko cyfry i litery odzwolone

czyli gosciu jak chce wpisac same cyfry to musi tez wpisac przynjamniej jedna litere,
no i odwrotnie gdy chce wpisac same litery to musi sie tam znalesc przynajmniej jedna cyfra
golaod
Cytat(kusiu @ 13.08.2008, 14:26:46 ) *
No Panowie mam malo czasu dlatego nie nie pisze dokladnie... w pierwszym poscie napisalem o do mi chodzi a przeciez latwo skuma co co mi chodiz na tym przykladzie:

2haslo
has3lo
haslo4
1111h
2f331

no i tak tylko cyfry i litery odzwolone

czyli gosciu jak chce wpisac same cyfry to musi tez wpisac przynjamniej jedna litere,
no i odwrotnie gdy chce wpisac same litery to musi sie tam znalesc przynajmniej jedna cyfra


Czytaj zanim coś napiszesz, dałem Ci rozwiązanie post wyżej. Wystarczy je tylko oskryptować.
Shili
Cytat
No Panowie mam malo czasu dlatego nie nie pisze dokladnie...
I panie.
Następnym razem pisz od początku dokładnie, to od początku dostaniesz to czego oczekujesz. Więcej czasu straciłeś na ponownym precyzowaniu problemu niż użyłbyś go do dokładnego opisu na początku.

Kod
^([0-9]+[a-zA-Z]+[0-9]*)|([a-zA-Z]+[0-9]+[a-zA-Z]*)$
Spróbuj tego.

@golaod
Twoje rozwiązanie nie jest dobre. Przepuści inne rzeczy między innymi, na przykład:
..a8)
kusiu
Cytat(golaod @ 13.08.2008, 12:23:32 ) *
Najlepiej przepuścić 2 razy przez preg_match,(jeden sprawdza czy wystapila litera,drugi czy cyfra) ot cala filozofia smile.gif


No i najprostsze rozwiazania sa najlepsze !

  1. <?php
  2. if(strlen($FPASS)>=&& preg_match( "/[a-zA-Z]{1,}/", $FPASS ) && preg_match( "/[0-9]{1,}/", $FPASS ))
  3. echo "ok";
  4. ?>


Dzieki
pyro
Cytat(Shili @ 13.08.2008, 14:33:18 ) *
I panie.
Następnym razem pisz od początku dokładnie, to od początku dostaniesz to czego oczekujesz. Więcej czasu straciłeś na ponownym precyzowaniu problemu niż użyłbyś go do dokładnego opisu na początku.

Kod
^([0-9]+[a-zA-Z]+[0-9]*)|([a-zA-Z]+[0-9]+[a-zA-Z]*)$
Spróbuj tego.

@golaod
Twoje rozwiązanie nie jest dobre. Przepuści inne rzeczy między innymi, na przykład:
..a8)


to + 1 preg_match, który sprawdza czy nie ma innych znakow niz litery i cyfry
Shili
Cytat
No i najprostsze rozwiazania sa najlepsze !
Sprawdź sobie takie hasło: 2f---
Najprostsze rozwiązania są dobre, ale widać nie zawsze.

@edit
Sorry, nie zauważyłam ^^ Dzięki smile.gif
Swoją drogą nie wiem czy moje wyrażenie działa na pewno jak powinno dla wszystkich ciągów. Sprawdziłam dla kilku przykładów różnych i wydaje się działać jak powinno w każdym bądź razie.
pyro
Cytat(Shili @ 13.08.2008, 14:40:09 ) *
Sprawdź sobie takie hasło: 2f3ff3f31---
Najprostsze rozwiązania są dobre, ale widać nie zawsze.


ano właśnie... odsyłam do mojego ostatniego posta tongue.gifP
barthpl
Czyli jak zostało wspomniane wyżej z tym małym wyjątkiem iż można to zapisać w dwóch preg_match" title="Zobacz w manualu PHP" target="_manual'ach (a zapewne i w jednym).

  1. <?php
  2. function isPass( $pass )
  3. {
  4. $passLenght = strlen($pass);
  5. $passPattern1 = sprintf( '/([a-zA-Z]{%1$d})|([0-9]{%1$d})/', $passLenght );
  6. $passPattern2 = sprintf( '/[-_.]{%1$d}/', $passLenght );
  7.  
  8. if( $passLenght >= 5 && !preg_match( $passPattern1, $pass ) && !preg_match( $passPattern2, $pass ) )
  9. return true;
  10. return false;
  11. }
  12. ?>


$passPattern2 należy uzbroić we wszystkie znaki jakie nie powinny się znaleźć w haśle.
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.