Tester Wyrażeń Regularnych
还没有匹配结果
输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。
统计
命名分组汇总
当前没有命名分组。
Darmowy tester wyrażeń regularnych online (Regex Tester) z obsługą testowania dopasowania w czasie rzeczywistym w JS, podglądem grup przechwytujących/ nazwanych grup, podglądem zamiany, wyjaśnieniem składni regex, wbudowaną ochroną przed przekroczeniem czasu ReDoS przez Web Worker, z biblioteką często używanych szablonów regex, idealny dla programistów do szybkiego debugowania i weryfikacji wyrażeń regularnych.
Powiązane Rekomendacje
Co to jest wyrażenie regularne (Regex/RegExp)?
Wyrażenie regularne (Regular Expression, w skrócie Regex/RegExp) to język wzorców tekstowych, który za pomocą jednego ciągu znaków opisuje i dopasowuje serię ciągów znaków spełniających określone reguły składniowe. Jego historia sięga matematycznego modelu neuronów zaproponowanego w latach 50. przez neurologa Warrena McCullocha i matematyka Waltera Pittsa, później matematyk Stephen Kleene w 1956 roku na tej podstawie zaproponował algebraiczny opis «zbiorów regularnych». Ken Thompson, ojciec Uniksa, pod koniec lat 60. po raz pierwszy zaimplementował wyrażenia regularne w edytorze QED, po czym wyrażenia regularne stały się podstawową funkcją łańcucha narzędzi Uniksa (grep, sed, awk, vi).
W nowoczesnych językach programowania wyrażenia regularne są praktycznie standardową możliwością — RegExp w JavaScript, moduł re w Pythonie, java.util.regex w Javie, klasa Regex w .NET, pakiet regexp w Go — wszystkie zapewniają obsługę regex. Wyrażenia regularne są szeroko stosowane w scenariuszach takich jak walidacja formularzy (e-mail/numer telefonu/dowód tożsamości), wyszukiwanie i zamiana tekstu (wyszukiwanie i zamiana w edytorach), analiza logów (wyodrębnianie logów ERROR), crawlery sieciowe (wyodrębnianie treści HTML), czyszczenie danych (ETL), dopasowywanie tras, filtrowanie danych wejściowych i ochrona bezpieczeństwa (reguły WAF).
Podstawowe pojęcia wyrażeń regularnych obejmują: klasy znaków (\d cyfry, \w znaki słowne, \s białe znaki), kwantyfikatory (* zero lub więcej, + jeden lub więcej, ? zero lub jeden, {n,m} określona liczba razy), kotwice (^ początek, $ koniec, \b granica słowa), grupy (... grupa przechwytująca, (?:...) grupa nieprzechwytująca, (?<name>...) nazwana grupa), alternatywa (|), zbiory znaków ([a-z]), lookaround ((?=...) pozytywne spojrzenie w przód, (?!) negatywne spojrzenie w przód) itp. Opanowanie regex znacznie zwiększa wydajność przetwarzania tekstu, ale należy również pamiętać o ochronie przed pułapkami wydajnościowymi takimi jak ReDoS.
Przypadki użycia
- Testowanie online poprawności regex dla e-mail, numeru telefonu, numeru dowodu tożsamości, URL itp. podczas opracowywania reguł walidacji formularzy
- Wyodrębnianie znaczników czasu, komunikatów o błędach, adresów IP z logów poziomu ERROR/INFO za pomocą regex podczas analizy logów
- Podgląd efektu zamiany regex podczas czyszczenia danych/ETL, np. konwersja formatu daty, maskowanie poufnych informacji (gwiazdki w środku numeru telefonu)
- Sprawdzanie czy regex do wyodrębniania treści dokładnie dopasowuje docelowe fragmenty HTML lub pola JSON podczas pisania crawlerów
- Zrozumienie znaczenia każdego metaznaku i kwantyfikatora za pomocą panelu «Wyjaśnienie» podczas nauki wyrażeń regularnych, szybkie rozpoczęcie pracy z szablonami
- Wysyłanie wątpliwych regex kolegom przez link do udostępniania podczas Code Review w celu wspólnego debugowania i optymalizacji
Jak Używać
- Wpisz wyrażenie regularne w polu wprowadzania między / / na górze (nie musisz samodzielnie dodawać ukośników), wpisz flagi (np. g, gi, gim) po prawej stronie lub kliknij przyciski poniżej aby przełączać
- Wklej lub wpisz tekst do dopasowania w obszarze «Tekst testowy», dopasowania zostaną natychmiast podświetlone różnymi kolorami
- Kliknij panel «Szczegóły dopasowania» po prawej stronie aby zobaczyć pozycję, zawartość, grupy przechwytujące i nazwane grupy każdego dopasowania
- Przejdź do zakładki «Obszar zamiany», wpisz ciąg zamiany (obsługuje odwołania takie jak $1/$&/$<name>), zobacz wynik zamiany w czasie rzeczywistym
- Przejdź do zakładki «Wyjaśnienie wyrażenia» aby zobaczyć automatycznie wygenerowane wyjaśnienie składni regex po elemencie
- Jeśli potrzebujesz często używanych szablonów, kliknij «Biblioteka szablonów kategoryzowanych» po lewej stronie i wybierz odpowiedni szablon aby wypełnić go jednym kliknięciem; po zakończeniu debugowania kliknij «Udostępnij» aby wygenerować link
Funkcje
- Izolowane wykonywanie w Web Worker: regex działa w oddzielnym wątku Worker z automatycznym przerwaniem po 500 ms, całkowicie zapobiega zawieszaniu się przeglądarki przez ReDoS
- Dopasowanie w czasie rzeczywistym + kolorowe podświetlenie: wyniki są wyświetlane natychmiast po wpisaniu, różne dopasowania są podświetlane 5 kolorami, po najechaniu kursorem wyświetla się powiązany panel szczegółów
- Grupy przechwytujące + nazwane grupy: dla każdego dopasowania automatycznie rozwijane i wyświetlane są wszystkie grupy przechwytujące ($1/$2) i nazwane grupy ($<name>) wraz z podsumowującymi statystykami
- Podgląd zamiany: wpisz ciąg zamiany i zobacz wynik w czasie rzeczywistym, obsługuje przyciski szybkiego wstawiania składni $1/$&/$`/$'/$<name>
- Wyjaśnienie składni regex: automatycznie analizuje wyrażenie regularne, wyjaśnia po elemencie znaczenie metaznaków, kwantyfikatorów, grup, kotwic itp.
- 12 często używanych szablonów: wbudowane 12 często używanych szablonów regex dla e-mail/URL/numeru telefonu/chińskiego/IPv4/UUID/daty/logów/znaczników HTML itp., wypełnienie jednym kliknięciem
- Przełączanie 6 flag: wizualne przyciski do przełączania flag g/i/m/s/u/y, nie trzeba pamiętać składni
- Link do udostępniania: jednym kliknięciem wygeneruj URL zawierający pattern/flags/text, skopiuj koledze aby bezpośrednio odtworzyć sytuację testową
- Statystyki wykonania: w czasie rzeczywistym wyświetla liczbę dopasowań, czas wykonania (ms), całkowitą liczbę grup przechwytujących, liczbę nazwanych grup
- Limit 1500 dopasowań: automatyczne obcinanie aby uniknąć zawieszania się strony przez bardzo długie teksty, przyjazny komunikat o błędzie składni dla nieprawidłowych regex
Przykłady kodu
Dopasowywanie i zamiana regex w JavaScript
// Sprawdź format e-mail
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true
// Wyodrębnij nazwane grupy (parsowanie daty)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'Czas spotkania: 2026-03-12, termin: 2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
console.log(m.groups.year, m.groups.month, m.groups.day);
}
// Zamiana: konwersja formatu daty YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Czas spotkania: 03/12/2026, termin: 04/01/2026Używanie modułu re w Pythonie
import re
# Wyszukaj wszystkie dopasowania
text = 'Kontakt: alice@example.com, bob@test.org'
emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
print(emails) # ['alice@example.com', 'bob@test.org']
# Wyodrębnij nazwane grupy (w Pythonie używa się składni ?P<name>)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, 'Opublikowano 2026-03-12')
if m:
print(m.group('year'), m.group('month'), m.group('day'))
# Zamiana: zamaskuj środkowe 4 cyfry numeru telefonu
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', 'Numer telefonu: 13812345678')
print(result) # Numer telefonu: 138****5678Używanie java.util.regex w Javie
import java.util.regex.*;
class RegexDemo {
public static void main(String[] args) {
String text = "Error [2026-03-12 18:05:09] Connection failed";
// Skompiluj regex (w środowisku produkcyjnym należy buforować instancję Pattern)
Pattern p = Pattern.compile(
"(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
);
Matcher m = p.matcher(text);
if (m.find()) {
System.out.println("Poziom: " + m.group("level"));
System.out.println("Czas: " + m.group("time"));
System.out.println("Wiadomość: " + m.group("message"));
}
// Zamień wszystkie cyfry
String cleaned = "abc123def456".replaceAll("\\d+", "*");
System.out.println(cleaned); // abc*def*
}
}Często Zadawane Pytania
Co to jest ReDoS? Dlaczego testowanie regex wymaga ochrony przed ReDoS?
ReDoS (Regular Expression Denial of Service, odmowa usługi przez wyrażenie regularne) to sytuacja, w której niektóre złośliwie skonstruowane wyrażenia regularne (np. `(a+)+$` dopasowujące długie ciągi) powodują katastrofalne cofanie się (catastrophic backtracking), co prowadzi do 100% zużycia procesora, zawieszenia przeglądarki lub awarii serwera. To narzędzie wykonuje dopasowywanie regex w izolowanym środowisku Web Worker z automatycznym przerwaniem po czasie oczekiwania 500 ms, więc nawet złośliwe regex powodujące cofanie się nie zawieszą Twojej przeglądarki — jest to kluczowa funkcja bezpieczeństwa tego narzędzia.
Co oznaczają sześć flag g, i, m, s, u, y w wyrażeniach regularnych?
g (global) dopasowanie globalne, wyszukuje wszystkie dopasowania zamiast tylko pierwszego; i (ignoreCase) ignoruje wielkość liter; m (multiline) tryb wielowierszowy, sprawia że ^ i $ dopasowują początek/koniec każdego wiersza; s (dotAll) sprawia że kropka . dopasowuje wszystkie znaki w tym znak nowej linii; u (unicode) tryb Unicode, poprawnie obsługuje emoji i znaki wielobajtowe; y (sticky) dopasowanie lepkie, dopasowuje dokładnie od pozycji lastIndex. To narzędzie udostępnia wizualne przyciski przełączania dla 6 flag, kliknij aby włączyć/wyłączyć w czasie rzeczywistym.
Co to są grupy przechwytujące i nazwane grupy? Jak ich używać?
Grupy przechwytujące są otoczone nawiasami okrągłymi `(pattern)`, po dopasowaniu podciągi można wyodrębnić za pomocą odwołań takich jak $1, $2. Nazwane grupy używają składni `(?<name>pattern)`, po dopasowaniu można się do nich odwoływać przez `$<name>`, co poprawia czytelność kodu. Na przykład po dopasowaniu daty za pomocą `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})` można ją ponownie sformatować w ciągu zamiany jako `$<year>年$<month>月$<day>日`. To narzędzie automatycznie wyświetla wyniki grup przechwytujących i nazwanych grup dla każdego dopasowania.
Jakich języków programowania składnię regex obsługuje?
To narzędzie jest oparte na natywnym silniku RegExp JavaScript i jest ogólnie kompatybilne ze składnią głównych silników, takich jak JS/TypeScript, moduł Python re, Java java.util.regex, PHP preg_*, Go regexp (wszystkie oparte na nurcie PCRE/Perl), główne różnice dotyczą niektórych zaawansowanych funkcji (np. składnia nazwanych grup `(?P<name>)` w Pythonie, zmienna długość lookbehind w .NET). 99% wyrażeń regularnych w codziennym tworzeniu (walidacja/wyodrębnianie e-mail, numeru telefonu, URL, daty itp.) jest uniwersalnych dla wszystkich silników, możesz je przetestować bezpośrednio w tym narzędziu, a następnie skopiować do kodu.
Jak podzielić się przetestowanym regex z kolegami?
Kliknij przycisk «Udostępnij» na górnym pasku narzędzi, narzędzie automatycznie zakoduje bieżące wyrażenie regularne, flagi i tekst testowy w parametrach URL i skopiuje link do schowka. Koledzy po otwarciu linku zobaczą dokładnie ten sam stan testu (pattern+flags+testText), co jest idealne do współpracy zespołowej i debugowania zdalnego.
Co oznaczają specjalne symbole $1, $&, $`, $' w ciągu zamiany?
W ciągu zamiany: $1, $2... oznaczają N-tą grupę przechwytującą; $& oznacza cały dopasowany tekst; $` oznacza część przed dopasowanym tekstem; $' oznacza część po dopasowanym tekście; $$ oznacza dosłowny znak $; $<name> oznacza nazwaną grupę. Na przykład zamiana `(\d{4})-(\d{2})-(\d{2})` na `$2/$3/$1` przekształca 2026-03-12 na 03/12/2026. W obszarze zamiany tego narzędzia znajdują się przyciski szybkiego wstawiania dla tych specjalnych symboli.
Słownik
- Regex / RegExp
- Skrót od Regular Expression (wyrażenie regularne), składnia ciągu znaków opisująca wzorce dopasowania tekstu, używana do wyszukiwania, zamiany i walidacji tekstu.
- Grupa przechwytująca (Capture Group)
- Podwyrażenie otoczone nawiasami okrągłymi (pattern), wyniki dopasowania można odwoływać się po pozycji za pomocą $1, $2.
- Nazwana grupa (Named Group)
- Grupa przechwytująca zdefiniowana składnią (?<name>pattern), można się do niej odwoływać po nazwie za pomocą $<name>, co zapewnia lepszą czytelność niż odwołania numeryczne.
- ReDoS
- Regular Expression Denial of Service (odmowa usługi przez wyrażenie regularne), spowodowane katastrofalnym cofaniem się, co prowadzi do wykładniczego wzrostu czasu wykonania regex, powodując zawieszenie przeglądarki lub serwera.
- Cofanie się (Backtracking)
- Mechanizm silnika NFA regex, w którym po nieudanej próbie dopasowania wraca do poprzedniej pozycji aby spróbować innych możliwości; złożone regex może prowadzić do wykładniczego cofania się.
- Flagi (Flags)
- Parametry modyfikujące zachowanie dopasowywania regex, powszechne: g(globalne), i(ignorowanie wielkości liter), m(wielowierszowe), s(dotAll), u(Unicode), y(lepkie).
- Lookaround
- Asercje o zerowej szerokości, w tym pozytywne spojrzenie w przód (?=...), negatywne spojrzenie w przód (?!...), pozytywne spojrzenie wstecz (?<=...), negatywne spojrzenie wstecz (?<!...), tylko sprawdzają pozycję nie zużywając znaków.
- PCRE
- Perl Compatible Regular Expressions (wyrażenia regularne zgodne z Perlem), szeroko stosowany standard składni regex, przyjęty przez większość języków takich jak PHP, Java, Python.
- Web Worker
- API wątku tła w przeglądarce, niezależne od wątku głównego, to narzędzie używa go do wykonywania regex w Workerze, więc nawet przy wystąpieniu ReDoS interfejs użytkownika nie jest blokowany.
- Kwantyfikator (Quantifier)
- Składnia określająca liczbę powtórzeń poprzedniego elementu: *(0 lub więcej), +(1 lub więcej), ?(0 lub 1), {n}(dokładnie n razy), {n,m}(od n do m razy).
Szybka ściągawka z często używanymi metaznakami regex
| Metaznak | Znaczenie | Przykład |
|---|---|---|
. | Dowolny znak (z wyjątkiem nowej linii, z flagą s włącznie z nową linią) | a.c dopasowuje abc, aXc, nie dopasowuje a\nc |
\d | Znak cyfry, odpowiednik [0-9] | \d{3} dopasowuje 123, 456 |
\w | Znak słowny, odpowiednik [A-Za-z0-9_] | \w+ dopasowuje hello_123 |
\s | Biały znak (spacja/tabulacja/nowa linia itp.) | a\sb dopasowuje a b (spacja pomiędzy) |
^ | Początek ciągu (z flagą m — początek wiersza) | ^Hello dopasowuje Hello na początku wiersza |
$ | Koniec ciągu (z flagą m — koniec wiersza) | end$ dopasowuje end na końcu wiersza |
\b | Granica słowa | \bcat\b dopasowuje samodzielne słowo cat, nie dopasowuje category |
* | Powtórzenie poprzedniego elementu 0 lub więcej razy (zachłanne) | ab*c dopasowuje ac, abc, abbc |
+ | Powtórzenie poprzedniego elementu 1 lub więcej razy | ab+c dopasowuje abc, abbc, nie dopasowuje ac |
? | Poprzedni element 0 lub 1 raz (lub używany do niezachłannych/lookaround) | colou?r dopasowuje color i colour |
| | Alternatywa/lub, dopasowuje lewą lub prawą stronę | cat|dog dopasowuje cat lub dog |
[...] | Zbiór znaków, dopasowuje dowolny znak z niego | [aeiou] dopasowuje dowolną samogłoskę |
Szybkie szablony często używanych wyrażeń regularnych
| Przeznaczenie | Wyrażenie regularne | Zalecane flagi |
|---|---|---|
| Adres e-mail | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} | g |
| Numer telefonu komórkowego w Chinach kontynentalnych | 1[3-9]\d{9} | g |
| Link URL | https?:\/\/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_+.~#?&/=]* | gi |
| Adres IPv4 | \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b | g |
| Data YYYY-MM-DD | \d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]) | g |
| Numer dowodu tożsamości (18 cyfr) | [1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx] | g |
| UUID | [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12} | gi |
Authoritative References
- Symulator daltonizmu
- Konwerter kolorów
- Konwerter .htaccess na Nginx
- Konwerter SQL
- Parser Cookie
- Generator wyrażeń Cron
- Weryfikator wyrażeń Cron
- Formatowanie CSS
- Kompresja CSS
- CSV na Excel
- Konwerter walut
- Porównywanie różnic
- Generator ikon witryn
- Formatowanie XML
- Konwerter Szesnastkowy
- Formatowanie HTML
- Kompresja HTML
- HTML na Markdown
- Markdown na HTML
- Formatowanie JavaScript
- Kompresja JavaScript
- Formatownik JSX
- Kompresja JSX
- Grupowanie słów kluczowych
- Generator Lorem Ipsum
- Generator tabel Markdown
- Generator Meta Tagów
- Generator haseł
- Sprawdzanie siły hasła
- Generator QR Code i kodów kreskowych
- Tester Wyrażeń Regularnych
- Generator Slug
- Kreator SQL
- Narzędzie do formatowania SQL
- Licznik Słów
- Narzędzia czasowe
- Formatowanie TS
- Kompresja TS
- Formatowanie TSX
- Kompresja TSX
- Konwerter Unix Timestamp
- Generator UUID
- Formatowanie YAML
- Konwersja sprawy