Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z wyrazeniem regularmym, dwa minusy
kufalo
post 10.11.2009, 09:16:17
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

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


Mam pewniem maly roblem z wyrazeniem regularnym. Doszedlem do pewnego etapu ale pewna rzecz nie dziala jak bym chcial. Zalozenia:

1) Ciag ma sie skladac ze znakow nie innych niz [\da-z.-]
2) Na poczatku i na koncu nie moze byc kropki ani minusa,
3) dwie kropki nie moga wystepowac kolo siebie,
4) minus i kropka nie moga wystepowac kolo siebie.

Napisalem cos takiego:
Kod
#^[\da-z]([.-]?[\da-z])*$#


... dziala prawie dobrze, ale niestety zablokowalem mozliwosc dwoch minusow kolo siebie. Jak to rozwiazac?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
cojack
post 10.11.2009, 10:12:55
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Kod
cojack@cojack-laptop:~$ php -r '$a = ".-ab..cefgh-."; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = "-ab..cefgh."; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = ".ab..cefgh-"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = "ab..cefgh-"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = ".ab..cefgh"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = ".abcefgh"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad
cojack@cojack-laptop:~$ php -r '$a = "abcefgh"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
ok


  1. preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
zegarek84
post 10.11.2009, 11:56:09
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Kod
/^(?![\.-])(:?[\da-z\.-](?!\.\-|\-\.|\.\.))*[\da-z]$/


Ten post edytował zegarek84 10.11.2009, 12:11:49


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
kufalo
post 10.11.2009, 12:51:18
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

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


wielkie dzieki - o to mi chodzilo smile.gif
Go to the top of the page
+Quote Post
cojack
post 10.11.2009, 16:38:09
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


A że się tak spytam co w moim jest nie tak?


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
zegarek84
post 10.11.2009, 17:29:53
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


nie testowałem ale jak na szybko patrzę i założenie tego co napisałeś (szukałeś niedozwolonych znaków) to choć jest prawidłowe "A.B" to w powyższym przypadku raczej się nie sprawdzi....

wewnątrz jedna kropka miała być dozwolona - dopiero 2 i więcej nie - a i nie sprawdzałem ale patrząc na logikę to wykluczyłeś też cyfry??
Kod
[grzesiek@localhost ~]$ php -r '$a = "abc4efgh"; if(preg_match("/^(?:[.-])|([.]{1})|(\d)|(?:[.-])$/",$a)) echo "blad\n"; else echo "ok\n";'
blad


Ten post edytował zegarek84 10.11.2009, 18:20:53


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

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: 14.08.2025 - 05:27