Test wyrażeń regularnych
Przetestuj lokalnie wyrażenia regularne JavaScript za pomocą flag g/i/m/s/u/y, liczby dopasowań, przechwytywania i nazwanych grup, zakresów wiersz-kolumna oraz natywnego podglądu zamiany.
/
/g
Tekst testowy
Znaki
0 / 50,000
Wyniki dopasowań
Wprowadź wzór, aby rozpocząć dopasowywanie
Tekst zamiany
Znaki
0 / 50,000
Podgląd wymiany
Szybki start
Typowe scenariusze
Ekstrakcja danych
użyj (\d{4}-\d{2}-\d{2}) do wyciągania dat oraz ([\w.]+@[\w.]+) do wyciągania adresów e-mail
Walidacja formatu
napisz regex, wklej kilka przykładów i szybko sprawdź, czy wzorzec dokładnie pasuje do docelowego formatu
Zamiana wsadowa
użyj grup przechwytujących do przestawiania treści. Na przykład zamień "Imię Nazwisko" na "Nazwisko, Imię" wzorcem (\S+)\s+(\S+) i zamianą $2, $1
Nazwane grupy
użyj (?<rok>\d{4})-(?<miesiąc>\d{2})-(?<dzień>\d{2}) do wyodrębnienia dat, a następnie użyj $<rok>/$<miesiąc>/$<dzień> do ich odbudowania
Nauka regexów
testuj różne wzorce i obserwuj zachowanie dopasowań, aby wizualnie zrozumieć kwantyfikatory, kotwice i klasy znaków
Obsługa wielu linii
włącz flagę m, aby ^ i $ dopasowywały się do każdej linii; przydatne w logach, kodzie i plikach konfiguracyjnych
Wskazówki użycia
Ograniczenia i kompatybilność
Prywatność i bezpieczeństwo
Najczęstsze pytania
Wyrażenie regularne (regex) to język wzorców służący do opisywania struktur tekstowych. Potraktuj to jako „wyszukiwanie zaawansowane” — zamiast szukać stałego słowa, wyszukujesz wszystko, co pasuje do reguły.\n\nNa przykład \\d{4}-\\d{2}-\\d{2} dopasowuje wszystkie daty w formacie RRRR-MM-DD i [\\w.]+@[\\w.]+ pasuje do adresów e-mail. Regex jest szeroko stosowany do: wyszukiwania i ekstrakcji tekstu (znajdowanie kodów błędów w logach), sprawdzania poprawności formatu (sprawdzanie numerów telefonów) i zastępowania partii (konwersja formatów daty).\n\nPrawie każdy język programowania (JavaScript, Python, Java, Go itp.) i wiele narzędzi (VS Code, grep, sed) obsługuje wyrażenia regularne z przeważnie podobną składnią. To narzędzie wykorzystuje silnik JavaScript RegExp do szybkiego testowania i uczenia się online.
Wyrażenie regularne JavaScript domyślnie zwraca tylko pierwsze dopasowanie — jest to zachowanie specyfikacji języka, a nie ograniczenie narzędzia. Kliknij przycisk g na pasku flag, aby włączyć wyszukiwanie globalne i wyświetlić wszystkie dopasowania.\n\nZauważ interakcję między g i y: g skanuje cały tekst od początku do końca, podczas gdy y (przyklejony) wymaga, aby każde dopasowanie zaczynało się dokładnie w miejscu zakończenia poprzedniego — jeśli między dopasowaniami znajdują się znaki przerwy, y zatrzymuje się na pierwszej przerwie. Zwykle wystarczy włączyć g bez y.
Najczęstsze przyczyny są cztery: 1. Niedomknięte nawiasy: każde ( wymaga ), a każde [ wymaga ]. IDE może je dopisać automatycznie, ale narzędzie sprawdza dokładnie wpisany wzorzec. 2. Kwantyfikator w złym miejscu: *, +, ?, {n} muszą występować po elemencie, który można powtarzać. Kombinacje typu *+ lub ?* są nieprawidłowe; kwantyfikatory leniwe zapisuje się jako *? lub +?. 3. Niedokończone escape: samotny \ na końcu wzorca jest nieprawidłowy; musi poprzedzać konkretny znak, np. \d, \n albo \\. 4. Właściwości Unicode bez flagi u: \p{L}, \p{Script=Han} i podobne property escapes wymagają w tym narzędziu flagi u.
To odwołania używane przez JavaScript String.prototype.replace(): - $1, $2, ..., $99: treść odpowiedniej grupy przechwytującej. - $&: całe dopasowanie. - $`: tekst przed dopasowaniem. - $': tekst po dopasowaniu. - $<name>: treść nazwanej grupy (?<name>...). Przykład: jeśli (\w+)\s(\w+) dopasuje „hello world”, zamiana $2-$1 da „world-hello”. Aby wstawić dosłowny znak $ w tekście zamiany, użyj $$.
Silniki regex różnią się między językami głównie w trzech obszarach: 1. Obsługiwana składnia: JavaScript nie obsługuje rekurencji PCRE (?R), gałęzi warunkowych (?(cond)yes|no) ani grup atomowych (?>...). Moduł re w Pythonie też ich nie obsługuje, a zewnętrzny moduł regex obsługuje część z nich. Java obsługuje grupy atomowe, ale nie rekurencję. 2. Unicode: w JavaScript \w oznacza głównie podstawowe litery łacińskie, cyfry i podkreślenie. Flaga u nie sprawia, że \w automatycznie dopasuje chińskie znaki. Do liter Unicode używaj property escapes, np. \p{L}, razem z flagą u. 3. Nowe linie: w Pythonie . domyślnie nie dopasowuje \n, tak samo jak w JavaScript. Java Pattern.DOTALL działa podobnie do flagi s w JavaScript. Użyj tego narzędzia do szybkiej weryfikacji JavaScript RegExp, a wynik potwierdź w docelowym silniku.