Przejdź do głównej treści
Grafika przedstawia ukryty obrazek

Wyrażenia regularne i ich obsługa w PHP oraz JavaScript

Grafika Regex

Wprowadzenie

Wyrażenia regularne (ang. regular expressions, regex) to potężne narzędzie umożliwiające przeszukiwanie, dopasowywanie i manipulację tekstu. Są szeroko stosowane w różnych językach programowania, w tym w PHP i JavaScript. W tym artykule omówimy sposoby obsługi wyrażeń regularnych w obu tych językach oraz przedstawimy przykłady ich zastosowań.

Wyrażenia regularne w PHP

W PHP do obsługi wyrażeń regularnych najczęściej wykorzystuje się funkcje oparte na standardzie PCRE (Perl Compatible Regular Expressions), takie jak:

  • preg_match() — sprawdza, czy dane wyrażenie regularne pasuje do ciągu.
  • preg_match_all() — wyszukuje wszystkie dopasowania.
  • preg_replace() — zamienia dopasowane fragmenty tekstu.

Przykłady wyrażeń regularnych w PHP

1. Proste dopasowanie liczby

$text = "Mam 2 koty.";
if (preg_match('/\d+/', $text, $matches)) {
    echo "Znaleziono liczbę: " . $matches[0];
}

Opis: \d+ dopasowuje jedną lub więcej cyfr.

2. Walidacja adresu e-mail

$email = "example@example.com";
if (preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email)) {
    echo "Poprawny adres e-mail.";
} else {
    echo "Niepoprawny adres e-mail.";
}

Opis: Wyrażenie sprawdza poprawność struktury adresu e-mail.

3. Wyszukiwanie słów zaczynających się od litery "k"

$text = "kot i królik";
preg_match_all('/\bk\w*/i', $text, $matches);
print_r($matches);

Opis: \bk\w* wyszukuje słowa zaczynające się na literę k.

Wyrażenia regularne w JavaScript

W JavaScript wyrażenia regularne są obsługiwane przez obiekt RegExp lub bezpośrednio poprzez literały regex, np. /pattern/flags.

Najważniejsze metody to:

  • test() — sprawdza, czy wyrażenie regularne pasuje do ciągu.
  • exec() — zwraca dopasowanie lub null.
  • Metody łańcuchowe: match(), replace(), search(), split().

Przykłady wyrażeń regularnych w JavaScript

1. Proste sprawdzenie obecności cyfry

const text = "Mam 2 koty.";
const regex = /\d+/;
console.log(regex.test(text)); // true

Opis: Wyrażenie /\d+/ sprawdza, czy tekst zawiera co najmniej jedną cyfrę.

2. Walidacja adresu e-mail

const email = "example@example.com";
const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(regex.test(email)); // true

Opis: Podobnie jak w PHP, to wyrażenie sprawdza poprawność adresu e-mail.

3. Wyszukiwanie słów zaczynających się od litery "k"

const text = "kot i królik";
const matches = text.match(/\bk\w*/gi);
console.log(matches); // ["kot", "królik"]

Opis: Wyrażenie \bk\w* wyszukuje słowa zaczynające się od litery k, niezależnie od wielkości liter.

Zaawansowane przykłady wyrażeń regularnych

1. Wyszukiwanie dat w formacie "DD-MM-YYYY"

PHP:

$text = "Dzisiaj jest 01-02-2025.";
if (preg_match('/\b\d{2}-\d{2}-\d{4}\b/', $text, $matches)) {
    echo "Znaleziono datę: " . $matches[0];
}

JavaScript:

const text = "Dzisiaj jest 01-02-2025.";
const regex = /\b\d{2}-\d{2}-\d{4}\b/;
const match = text.match(regex);
if (match) {
    console.log("Znaleziono datę:", match[0]);
}

2. Ekstrakcja hashtagów z tekstu

PHP:

$text = "#programowanie jest super #php #javascript";
preg_match_all('/#\w+/', $text, $matches);
print_r($matches);

JavaScript:

const text = "#programowanie jest super #php #javascript";
const matches = text.match(/#\w+/g);
console.log(matches); // ["#programowanie", "#php", "#javascript"]
Wskazówka

Zachęcam do zapoznania się z moją aplikacją do budowania i testowania wyrażeń regularnych.

Składnia regex JavaScript

Znaki meta

  • a|b – Pasuje do a lub b
  • . – Dopasowuje dowolny znak (symbol wieloznaczny) z wyjątkiem znaków kończących wiersz
  • \w – Dopasowuje znaki słowa (alfanumeryczne i _)
  • \W – Dopasowuje znaki niebędące słowami
  • \d – Dopasowuje cyfry (0-9)
  • \D – Dopasowuje znaki niebędące cyframi
  • \s – Dopasowuje znaki odstępu (spacja, tabulator, nowy wiersz)
  • \S – Dopasowuje znak inny niż biały
  • [\b] – Dopasowuje znaki cofania
  • \0 – Dopasowuje znaki NULL
  • \n – Dopasowuje znaki nowego wiersza
  • \f – Dopasowuje znaki końca linii
  • \r – Dopasowuje znaki powrotu karetki
  • \t – Dopasowuje znaki tabulacji
  • \v – Dopasowuje znaki tabulacji pionowej
  • \p{} – Dopasowuje znaki o podanej właściwości Unicode
  • \P{} – Dopasowuje znak NIE o podanej właściwości Unicode
  • \ddd – Dopasowuje znak o liczbie ósemkowej ddd
  • \xhh – Dopasowuje znak o liczbie szesnastkowej hh
  • \uhhhh – Dopasowuje znak Unicode o liczbie szesnastkowej hhhh

Klasy znaków

  • [a] – Dopasowuje znak w nawiasach kwadratowych
  • [^a] – Dopasowuje wszystkie znaki NIE znajdujące się w nawiasach kwadratowych
  • [abc] – Dopasowuje wszystkie znaki w nawiasach kwadratowych
  • [^abc] – Dopasowuje wszystkie znaki NIE znajdujące się w nawiasach kwadratowych
  • [a-z] – Dopasowuje wszystkie znaki z zakresu od a do z
  • [^a-z] – Dopasowuje wszystkie znaki NIE znajdujące się w zakresie od a do z
  • [0-9] – Dopasowuje wszystkie znaki z zakresu od 0 do 9
  • [^0-9] – Dopasowuje wszystkie znaki NIE znajdujące się w zakresie od 0 do 9

Kwantyfikatory

  • x+ – Pasuje do co najmniej jednego x
  • x* – Pasuje do zera lub więcej wystąpień x
  • x? – Pasuje do zera lub jednego wystąpienia x
  • x{n} – Pasuje do n wystąpień x
  • x{n,m} – Pasuje do od n do m wystąpień x
  • x{n,} – Pasuje do n lub więcej wystąpień x

Grupy

  • (x) – Dopasowuje x i zapamiętuje dopasowanie
  • (?\<n>x) – Dopasowuje x i oznacza je etykietą n
  • (?flag:x) – Włącza flagę(y) dla x
  • (?flag-flag:x) – Wyłącza flagę(y) dla x

Granice

  • ^ – Dopasowuje początek ciągu znaków lub początek wiersza, jeśli ustawiona jest flaga m (wielowierszowa)
  • $ – Dopasowuje koniec ciągu znaków lub koniec wiersza, jeśli ustawiona jest flaga m (wielowierszowa)
  • \b – Dopasowuje początek lub koniec słowa
  • \B – Dopasowuje NIE początek ani koniec słowa
  • (?=...) – Dopasowuje kolejny ciąg znaków
  • (?!...) – Dopasowuje NIE kolejny ciąg znaków
  • (?<=...) – Dopasowuje poprzedni ciąg znaków
  • (?<!...) – Dopasowuje NIE poprzedni ciąg znaków

Flagi

  • /d – Wykonuje dopasowania podciągów
  • /g – Wykonuje dopasowanie globalne (znajdź wszystko)
  • /i – Wykonuje dopasowanie bez uwzględniania wielkości liter
  • /m – Wykonuje dopasowanie wielowierszowe
  • /s – Umożliwia użycie kropki (.) do dopasowywania terminatorów wiersza
  • /u – Włącza obsługę Unicode
  • /v – Uaktualnienie flagi /u zapewniające lepszą obsługę Unicode
  • /y – Wykonuje wyszukiwanie „lepkie”

Podsumowanie

Wyrażenia regularne są niezwykle wszechstronne i przydatne w pracy z tekstem. Zarówno PHP, jak i JavaScript oferują funkcje umożliwiające efektywne korzystanie z tej technologii. Zastosowanie wyrażeń regularnych może znaczenie uprościć rozwiązywanie problemów związanych z walidacją danych, wyszukiwaniem informacji oraz manipulacją tekstu.

1 lutego 2025 19

Kategorie

programowanie

Dziękujemy!
()

Powiązane wpisy


Poprzedni wpis

Komunikacja kodem Morse'a

Informacja o cookies

Moja strona internetowa wykorzystuje wyłącznie niezbędne pliki cookies, które są wymagane do jej prawidłowego działania. Nie używam ciasteczek w celach marketingowych ani analitycznych. Korzystając z mojej strony, wyrażasz zgodę na stosowanie tych plików. Możesz dowiedzieć się więcej w mojej polityce prywatności.