2010-02-07 12 views
10

Tworzę system rejestracji, który musi sprawdzić nazwę/pass itp z regex (i wolą), co mam tak daleko jest:PHP: Proste wyrażenia regularne o takiej samej długości?

//Check so numbers aren't first, such as 00foobar 
preg_match('/^(?!\d)[a-z0-9]+$/iD',$usrname); 
//Just simple check 
preg_match('/^[a-zA-Z0-9]+$/',$psword); 

Ale muszę robić głupie rzeczy w sprawozdaniach Jeśli podoba:

if strlen($psword) > 30 || if (strlen($psword) < 4) ....

Jak bym impliment sprawdzanie długości w moich dwóch oryginalnych regularnych sprawozdań ekspresji? To by mnie tak szczęśliwy ..

+0

Nie sądzę, że "jeśli" jest głupie. Jest doskonale czytelny; nie musisz robić wszystkiego w jednym regex. Tak czy siak * proszę * pozwolić na więcej znaków niż w hasłach. Jako osoba, która lubi używać poprawnie zabezpieczonych haseł z szerokim zakresem interpunkcji, nie ma nic bardziej frustrującego niż strona, która niepotrzebnie ogranicza hasła do alfanumerycznych. – bobince

+0

@bobince 30 brzmiało jak wystarczająco dobry numer, "duży", pracuję nad projektem z kimś, więc dodam go wyżej i wyjaśnię. –

Odpowiedz

15

samo, ale używając \ D W i \ w słowo i cyfr, ale warto również zawierać podstawowe symbole jak %!?/ ... etc...

preg_match('/^[\w\d]{4,30}$/',$psword); 

{n,v} by potwierdzić na minimalnym n i maksymalnych elementów v Przed .

, takie jak A{2,3}, które można zweryfikować pod kątem AA i AAA. możesz uzyskać więcej informacji

W ten sam sposób, jeśli chcesz ustawić tylko minimalną liczbę patern, to zrobi to {n}.

+1

Jeśli ustawisz, jak duże może być hasło, proponuję więcej niż 30 znaków. Niektórzy ludzie mają długie hasła i są dla nich dobre. Jest bezpieczniejszy. –

+0

Biorąc pod uwagę, że jest to 30 znaków: 'thisais30characterspasswordyay'. Wiem, że jedno z moich haseł jest dłuższe. –

+0

@ Charchar102, Masz rację, ale jest to prosta gra, więc może po prostu zatrzymam ją na 40. –

4

myślę, że to powinno wystarczyć:

preg_match ('/^[a-zA-Z0-9] {4,30} $ /', $ psword);

Powiązane problemy