Menu

Tester wyrażeń regularnych

Testuj wyrażenia regularne z animowanym podświetlaniem dopasowań.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest tester regex?

Tester regex pozwala wpisać wyrażenie regularne i od razu zobaczyć, co pasuje do niego w przykładowym tekście. Programiści używają regex (wyrażeń regularnych) do walidacji danych wejściowych, wyciągania danych z ciągów znaków, przeszukiwania logów, czyszczenia tekstu, tworzenia poleceń w edytorze i reguł typu znajdź i zamień.

Na początku regex wygląda jak szyfr, bo kilka symboli niesie mnóstwo znaczenia. Tester na żywo odczarowuje go: każdy wpisany znak aktualizuje podświetlone dopasowania i grupy przechwytujące, więc możesz eksperymentować, aż wzorzec zrobi dokładnie to, czego chcesz.

Różne języki programowania używają nieco innych silników regex (JavaScript, PCRE, Python, Java, Go, .NET). Podstawy, czyli znaki, klasy znaków, kwantyfikatory, kotwice i grupy, działają wszędzie. Różnice pojawiają się przy funkcjach zaawansowanych (lookbehind, grupy nazwane, kwantyfikatory zaborcze).

Czego nauczysz się, testując regex

  • Wzorzec opisuje *kształt* tekstu, a nie jego znaczenie. \d+ pasuje do ciągu cyfr, ale nie wie, czy liczba ma sens.
  • Flagi zmieniają działanie: g znajduje wszystkie dopasowania, i ignoruje wielkość liter, m sprawia, że ^ i $ pasują do początku i końca linii, a s pozwala . dopasować znak nowej linii.
  • Grupy przechwytujące (...) wyciągają fragmenty dopasowania, zamiast tylko sprawdzać, czy cały ciąg pasuje. To podstawa parsowania.
  • Kwantyfikatory są domyślnie *zachłanne* (dopasowują jak najwięcej). Dodanie ? czyni je *leniwymi* (dopasowują jak najmniej).

Jak używać testera regex krok po kroku

  1. Wpisz swój wzorzec

    Wpisz wyrażenie regularne w polu wzorca. Nie dodawaj otaczających ukośników /: to składnia literału w JavaScript, a nie część samego wzorca.

  2. Włącz potrzebne flagi

    Najczęściej przydadzą się g (znajdź wszystkie dopasowania) oraz i (bez rozróżniania wielkości liter). Użyj m dla kotwic działających w każdej linii i s, aby . pasowała też do znaku nowej linii.

  3. Wklej tekst testowy

    Wklej przykładowy tekst do pola testowego. Dopasowania podświetlają się w trakcie pisania, a grupy przechwytujące pojawiają się pod listą dopasowań.

  4. Przeczytaj panel dopasowań

    Każde dopasowanie pokazuje pozycję, pełny tekst i przechwycone grupy. Dzięki temu sprawdzisz, czy wzorzec łapie to, co trzeba, i pomija resztę.

  5. Poprawiaj, aż będzie dobrze

    Zawężaj kwantyfikatory, dodawaj kotwice (^, $) albo escapuj znaki dosłowne (\., \?), aż dopasowania i grupy będą dokładnie takie, jakich potrzebuje twój kod.

Ściągawka regex

80% składni regex, której użyjesz w 99% przypadków. Dodaj ją do zakładek: to najszybszy sposób na zapamiętanie składni. Pełną gramatykę znajdziesz w przewodniku MDN po wyrażeniach regularnych.

TokenZnaczeniePrzykład
.Dowolny pojedynczy znak (oprócz nowej linii)a.c pasuje do abc, a-c
\d \DCyfra / nie cyfra\d+ pasuje do 123
\w \WZnak słowa (litera/cyfra/_) / znak spoza słowa\w+ pasuje do hello_1
\s \SBiały znak / nie biały znak\s+ pasuje do spacji i tabulatorów
[abc]Dowolny z a, b lub c[aeiou] pasuje do samogłoski
[^abc]Żaden z a, b ani c[^0-9] pasuje do znaków innych niż cyfry
* + ?0+, 1+, 0 lub 1 poprzedniego elementua+ pasuje do a, aaa
{n} {n,m}Dokładnie n / od n do m\d{3,5} od 3 do 5 cyfr
^ $Początek / koniec ciągu (lub linii z m)^Error linia zaczyna się od Error
(...)Grupa przechwytująca(\d+) przechwytuje cyfry
(?:...)Grupa nieprzechwytująca(?:foo|bar) grupuje bez przechwytywania
a|bAlternatywa: a lub byes|no
\bGranica słowa\bcat\b pasuje do cat, ale nie do cats

Przykłady regex do wypróbowania

Dopasuj prosty kształt adresu e-mail

Wzorzec
^[\w.+-]+@[\w-]+\.[\w.-]+$
Tekst

learner@coddy.tech

Ten wzorzec łapie podstawowy kształt something@something.something. Prawdziwa walidacja adresów e-mail jest dużo bardziej liberalna: w formularzach lepiej użyć type="email" i sprawdzenia po stronie serwera.

Wyciągnij wszystkie liczby ze zdania

Wzorzec
\d+
Tekst

Lesson 12 has 3 tasks and 2 quizzes.

Z flagą g wzorzec znajduje każdy ciąg cyfr: 12, 3, 2. \d+ to w regex odpowiednik "jedna lub więcej cyfr".

Wyciągnij id z adresu URL grupą przechwytującą

Wzorzec
/users/(\d+)
Tekst

/users/42/profile

Pełne dopasowanie to /users/42, a grupa przechwytująca (\d+) wyciąga samo 42. To właśnie dzięki grupom przechwytującym możesz naprawdę *wykorzystać* dopasowanie regex w kodzie.

Kwantyfikatory zachłanne i leniwe

Zachłanny
<.+>
Leniwy
<.+?>
Tekst

<b>hello</b>

Wersja zachłanna dopasowuje cały ciąg <b>hello</b>, bo .+ bierze tyle, ile się da. Wersja leniwa (+?) zatrzymuje się na pierwszym >, więc dopasowuje tylko <b> i </b>.

Częste błędy w regex

  • Brak escapowania znaków specjalnych: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Jeśli chodzi ci o znak dosłowny, poprzedź go \.
  • Pisanie wzorca, który działa na jednym przykładzie, ale zawodzi na prawdziwych danych z dodatkowymi spacjami, podziałami linii lub brakującymi polami.
  • Zachłanne użycie .*, które dopasowuje dużo więcej niż trzeba. Zamień je na .*? albo bardziej precyzyjną klasę znaków.
  • Próba parsowania głęboko zagnieżdżonych formatów (pełny HTML, złożone języki programowania, zbalansowane nawiasy) za pomocą regex. Użyj do tego prawdziwego parsera.
  • Pominięcie flagi g i zdziwienie, że podświetla się tylko pierwsze dopasowanie.

Regex: najczęstsze pytania

Co to jest regex?
Regex to skrót od *regular expression*, czyli wyrażenie regularne: zwięzły język wzorców do dopasowywania tekstu. Ta sama idea istnieje w prawie każdym języku programowania oraz w wielu edytorach i narzędziach wiersza poleceń.
Jak napisać wyrażenie regularne?
Zacznij od znaków dosłownych, które chcesz dopasować, a potem zastąp zmienne fragmenty klasami znaków (\d, \w, [abc]) i kwantyfikatorami (*, +, ?, {n,m}). Korzystaj z testera regex i poprawiaj wzorzec, aż będzie pasował dokładnie do tych przypadków, o które ci chodzi.
Co oznacza \w w regex?
\w pasuje do znaku słowa: litery, cyfry lub podkreślnika. \W to odwrotność (dowolny znak spoza słowa). Dokładny zestaw zależy od silnika i flagi Unicode.
Dlaczego mój regex dopasowuje za dużo?
Kwantyfikatory są domyślnie zachłanne: .* dopasowuje jak najwięcej. Przełącz się na kwantyfikator leniwy (.*?) albo użyj bardziej precyzyjnej klasy znaków, żeby zatrzymać dopasowanie tam, gdzie chcesz.
Czy regex w JavaScript jest taki sam jak wszędzie indziej?
Podstawy są te same, ale silniki się różnią. JavaScript, PCRE, re w Pythonie, Java, Go i .NET obsługują nieco inne flagi i funkcje zaawansowane (lookbehind, grupy nazwane, kwantyfikatory zaborcze).
Czy początkujący powinni uczyć się regex?
Tak, ale stopniowo. Zacznij od znaków dosłownych, klas znaków, kwantyfikatorów, kotwic, flag i grup przechwytujących. Lookaroundy, grupy nazwane i warunkowe wyrażenia regularne zostaw na później.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ