Przejdź do głównej zawartości

23. Wyrażenia regularne w PHP i JavaScript

Wyrażenia regularne w PHP i JavaScript

Wyrażenia regularne (regex) to język opisu wzorców tekstowych. Pozwalają w jednej linii kodu sprawdzić czy e-mail jest poprawny, wyciągnąć numer telefonu z tekstu lub zamienić wszystkie tagi HTML na pusty ciąg. Są dostępne w PHP (preg_*) i JavaScript (RegExp).

  1. Co oznaczają znaki specjalne w regex?., *, +, ?, [], {}, ^, $
  2. Kiedy używać regex zamiast filter_var? — walidacja niestandardowych wzorców
  3. Jak debugować wyrażenie regularne? — narzędzia online i flagi
  1. Co to jest wyrażenie regularne — definicja i zastosowania
  2. Znaki specjalne: klasy znaków, kwantyfikatory, kotwice
  3. Grupy przechwytujące i nienazwane
  4. PHP: preg_match(), preg_replace(), preg_split()
  5. JavaScript: RegExp, .test(), .match(), .replace()
  6. Flagi: i (case-insensitive), g (global), m (multiline)
  7. Przykłady walidacji: e-mail, telefon, numer PESEL, kod pocztowy

Tabela metaznaków

Tabela: znak → znaczenie → przykład dopasowania

Przykład walidacji

Regex e-mail lub telefonu z objaśnieniem każdej części wzorca

Minimum:

  • Znaki specjalne (min. 8)
  • preg_match() w PHP z przykładem
  • Jeden gotowy wzorzec walidacji

Forma: 10 slajdów, 10 minut

Ocena: 3.0
<?php
// PHP: preg_match()
$email = 'jan@example.com';
if (preg_match('/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/', $email)) {
echo "Poprawny e-mail";
}
// Walidacja polskiego numeru telefonu
$phone = '+48 123 456 789';
if (preg_match('/^(\+48\s?)?\d{3}[\s\-]?\d{3}[\s\-]?\d{3}$/', $phone)) {
echo "Poprawny telefon";
}
// Grupy przechwytujące — wyciąganie daty
$text = 'Data urodzenia: 15.05.1990';
preg_match('/(\d{2})\.(\d{2})\.(\d{4})/', $text, $matches);
echo "Rok: {$matches[3]}, Miesiąc: {$matches[2]}, Dzień: {$matches[1]}";
// PHP: preg_replace() — usuwanie tagów HTML
$dirty = '<p>Tekst z <strong>tagami</strong></p>';
$clean = preg_replace('/<[^>]+>/', '', $dirty);
echo $clean; // Tekst z tagami
// JavaScript: RegExp
const email = 'jan@example.com';
const emailRegex = /^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test(email)); // true
// Zamiana wielu spacji na jedną
const text = 'Za dużo spacji';
const fixed = text.replace(/\s+/g, ' ');
console.log(fixed); // Za dużo spacji
// Wyciąganie liczb z tekstu
const str = 'Cena: 29.99 zł, rabat: 5 zł';
const numbers = str.match(/\d+(\.\d+)?/g);
console.log(numbers); // ['29.99', '5']

Używaj regex101.com

Pokaż na żywo jak działa wzorzec na stronie regex101.com — idealne do demonstracji

Rozkładaj wzorzec na części

Na slajdzie rozłóż regex /^\d{2}\.\d{2}\.\d{4}$/ znak po znaku