logo
GeekFormat

Tester Wyrażeń Regularnych

Regex Tester
//
无匹配
Worker · 500ms 超时中断
分类模板库
点选即可填充 pattern / flags / demo
测试文本37
匹配详情
0

还没有匹配结果

输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。

匹配高亮预览· Hover / 点击右侧条目联动
Ada Lovelace Alan Turing Grace Hopper

统计

匹配数量
0
执行耗时
0ms
捕获组
0
命名分组
0

命名分组汇总

当前没有命名分组。

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

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

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

Jak Używać

  1. 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ć
  2. Wklej lub wpisz tekst do dopasowania w obszarze «Tekst testowy», dopasowania zostaną natychmiast podświetlone różnymi kolorami
  3. Kliknij panel «Szczegóły dopasowania» po prawej stronie aby zobaczyć pozycję, zawartość, grupy przechwytujące i nazwane grupy każdego dopasowania
  4. Przejdź do zakładki «Obszar zamiany», wpisz ciąg zamiany (obsługuje odwołania takie jak $1/$&/$<name>), zobacz wynik zamiany w czasie rzeczywistym
  5. Przejdź do zakładki «Wyjaśnienie wyrażenia» aby zobaczyć automatycznie wygenerowane wyjaśnienie składni regex po elemencie
  6. 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

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.

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.

术语表

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

MetaznakZnaczeniePrzykł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
\dZnak cyfry, odpowiednik [0-9]\d{3} dopasowuje 123, 456
\wZnak słowny, odpowiednik [A-Za-z0-9_]\w+ dopasowuje hello_123
\sBiał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
\bGranica 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 razyab+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

PrzeznaczenieWyrażenie regularneZalecane flagi
Adres e-mail[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Numer telefonu komórkowego w Chinach kontynentalnych1[3-9]\d{9}g
Link URLhttps?:\/\/[-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?)\bg
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

Code Examples

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/2026

Uż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****5678

Uż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*
    }
}

Authoritative References