Ireneusz Połeć Blog > Technologie WWW > Wyrażenia regularne w PHP #1 (teoria)
Wyrażenia regularne w PHP #1 (teoria)
Wyrażenie regularne to sposób na zapisanie danego fragmentu tekstu. Na początku mogą się one wydawać trudne do zrozumienia, ale po pewnym czasie można zobaczyć jakie możliwości dają w praktyce. Ogólnie mówiąc wyrażenia służą do walidacji danych wysyłanych przy pomocy formularzy. Mozna je oczywiście wykorzystać w innych miejscach, ale formularze to najbardziej popularne zastosowanie (najłatwiej można zauważyć sens).
Przy pomocy wyrażeń regularnych możemy sprawdzić czy wpisany adres e-mail jest zgodny ze stanem faktycznym. Oczywiście nie mamy w tym momencie możliwości sprawdzić czy rzeczywiście dany e-mail istnieje na konkretnym serwerze, ale możemy ustosunkować się do formalnego zapisu. Więcej informacji od strony praktycznej będzie w drugim wpisie na ten temat.
Na początku warto zacząć od podstaw:
Symbol | Znaczenie | More |
[a-z] | Klasa znaków odnosząca się do jednego znaku | Klasa znaków może być pisana wielkimi literami, np. [A-Z] lub małymi [a-z]. |
[abcdeqpz] | Klasa znaków odnosząca się do jednego znaku | Klasa znaków zawierająca litery, które mogą być danym symbolem |
[a-zA-z] | Zbiór zakresów znaków odnosząca się do jednego znaku | Oznacza wszystkie litery małe i duże |
[^a-b] | Zbiór znaków, które nie mogą reprezentować symbolu | Elementami nie może być litera od a do b. Znak ^ w nawiasach kwadratowych oznacza wyłączenie |
[[:alnum:]] | Znaki alfanumeryczne | |
[[:alpha:]] | Znaki alfabetu | |
[[:lower:]] | małe litery | |
[[:upper:]] | Wielkie litery | |
[[:cntrl:]] | Znaki kontrolne | |
[[:print:]] | Wszystkie możliwe znaki do wyświetlenia | |
[[:digit:]] | Liczby dziesiętne | |
[[:graph:]] | Wszystkie możliwe znaki do wyświetlenia poza spacjami | |
[[:xdigit:]] | Liczby szesnastkowe | |
[[:space:]] | Pusta przestrzeń | |
[[:punct:]] | Znaki przestankowe | |
[[:blank:]] | Taulatory i spacje | |
Znaki specjalne
Znak | Opis |
^ | dopasowanie na początku ciągu |
$ | dopasowanie na końcu ciągu |
\ | znak ucieczki przed używaniem znaków specjalnych |
( | początek podciągu |
) | koniec podciągu |
| | używanie alternatywnych możliwości |
* | powtórzenie od 0 do nieskończoności |
+ | powtórzenie od 1 do nieskończoności |
{ | początek kwantyfikatora |
} | koniec kwantyfikatora |
? | oznaczenie podwzorca jako domyślnego |
. | dopasowanie do każdego znaku bez nowego wiersza |
^ | przeciwność jeżeli użyte przed wyrażeniem (używane w nawiasach kwadratowych) |
– | określa zakres znaków |
Powtarzanie
[[:upper:]]+ | Występowanie dużej litery minimum jeden raz | Znak “+” po klasie oznacza ilość powtarzających się znaków dla danej klasy |
[[:lower:]]* | Występowanie małej litery 0 lub więcej razy | Znak “*” po klasie oznacza ilość powtarzających się znaków dla danej klasy |
Podwyrażenia
(a)* tom
Znak w nawiasie zostanie powtórzy od 0 w nieskończoność (decyduje o tym gwiazdka).
Zakresy powtórzeń
Ilość powtórzeń określają liczby w nawisach klamrowych “{}”, np.
(ab){2} – dwa powtórzenia ciągu “ab”, czyli: ‘ab’, ‘ab’
(ab){2..4} – od 2 do 4 powtórzeń ciągu “ab”, czyli ‘ab’,’ab’,’ab’ i ‘ab’
(ab){2.} – od 2 powtórzeń ciągu “ab”, czyli ‘ab’,’ab’,’ab’… ‘ab’
Możliwość wyboru
Możliwość wyboru to tak jakby używanie słowa “lub”, np. @|at. Jeżeli użytkownik użyje jedno z w/w znaków to będzie dane pasować do wyrażenia regularnego. Teraz się to wydaje trochę dziwne i mało zrozumiałe, ale na późniejszych przykładach praktycznych będzie można łatwiej to zrozumieć.