Regex Tester

Náš regex tester vám umožňuje psát a testovat regulární výrazy v reálném čase s okamžitým zvýrazněním shod. Sledujte všechny shody, zachytávající skupiny a indexy shod přímo při psaní. Podporuje všechny regulární příznaky v JavaScriptu (global, case-insensitive, multiline, dotAll, unicode, sticky). Obsahuje také režim nahrazování pro testování vyhledávání a nahrazování a komplexní přehled regex pravidel pro rychlou nápovědu.

star 4.9
auto_awesome AI
New

Regex Tester calculator

/ /
global | case-insensitive | multiline | dotAll | unicode
info Enter a pattern to start matching
0 matches
find_replace Replace Mode

                        

No matches yet

lightbulb Tips

  • •\d = digit, \w = word, \s = space
  • •Use 'g' flag to find all matches
  • •Escape special chars: \. \( \[ \+
  • •Use (?:...) for non-capturing groups

How to Use the Regex Tester

edit

Zadejte vzor

Napište svůj regex vzor do pole pro vzor. Syntaktické chyby jsou zvýrazněny v reálném čase.

text_fields

Vložte testovací text

Vložte nebo napište text, který chcete testovat. Shody se okamžitě zvýrazní.

tune

Přepnout příznaky

Povolte příznaky jako globální (g), nerozlišující velikost písem (i) nebo víceřádkový (m) pro úpravu chování vyhledávání.

visibility

Zobrazit výsledky

Zobrazte všechny shody, zachycené skupiny a pozice shod. Použijte režim nahrazení pro testování vyhledávání a nahrazování.

The Formula

Regulární výrazy jsou vzory používané k vyhledávání kombinací znaků v řetězcích. Engine regexu prochází testovaný řetězec zleva doprava a pokouší se najít shodu se vzorem na každé pozici. Příznaky upravují chování vyhledávání – 'g' najde všechny shody, 'i' ignoruje velikost písem, 'm' způsobuje, že ^ a $ odpovídají začátku a konci řádku.

new RegExp(pattern, flags).exec(testString)

lightbulb Variables Explained

  • pattern Vzor regulárního výrazu k vyhledávání
  • flags Příznaky regexu: g (globální), i (nerozlišuje velikost písem), m (víceřádkový), s (dotAll), u (unicode)
  • testString Vstupní text, proti kterému se vzor testuje
  • exec() Vrací podrobnosti o shodách včetně zachycených skupin a indexů

tips_and_updates Pro Tips

1

Použijte příznak 'g' pro vyhledání všech shod, nikoli pouze té první

2

Speciální znaky eskapujte zpětným lomítkem: \. \( \) \[ \] \{ \} \+ \* \?

3

Použijte (?:...) pro nezachytávající skupiny, pokud hodnotu shody nepotřebujete ukládat

4

\d = číslice, \w = slovní znak, \s = bílý znak, \b = hranice slova

5

Použijte .+? (líný/lazy) místo .+ (hladový/greedy), abyste zachytili co nejkratší řetězec

6

Příznak 'm' způsobí, že ^ a $ odpovídají začátku a konci každého řádku, nikoli pouze celému řetězci

7

Testujte hraniční případy: prázdné řetězce, speciální znaky a velmi dlouhé vstupy

Náš bezplatný tester regexů vám umožňuje vytvářet, testovat a ladit regulární výrazy se živým zvýrazňováním shod. Sledujte shody, zachycené skupiny a výsledky nahrazení okamžitě při psaní. Funguje se syntaxí JavaScript regexu.

Online tester regexů se živým náhledem

Zadejte vzor regexu a sledujte shody zvýrazněné v reálném čase. Náš tester regexů podporuje všechny příznaky JavaScriptu včetně:

  • global
  • case-insensitive
  • multiline
  • dotAll

Každá shoda je zvýrazněna a zachycené skupiny jsou zobrazeny samostatně pro snadné ladění.

Nástroj pro tvorbu a ladění vzorů regexu

Vytvářejte složité vzory regexu pomocí našeho interaktivního nástroje. Podívejte se přesně, s čím váš vzor odpovídá a proč.

Zachycené skupiny jsou očíslovány a zobrazeny, což usnadňuje tvorbu vzorů pro:

  • extrakci dat
  • validaci
  • zpracování textu

Přehled a reference regexu

Rychlá nápověda pro běžnou syntaxi regulárních výrazů:

  • znakové třídy (\d, \w, \s)
  • kvantifikátory (+, *, ?, {n})
  • ukotvení (^, $, \b)
  • skupiny a alternace
  • dopředné a zpětné vyhlížení (lookahead a lookbehind)

Vše, co potřebujete k sestavení regulárních výrazů přímo vedle testovacího nástroje.

Co je to regulární výraz a jak funguje?

Regulární výraz (regex) je posloupnost znaků, která definuje vyhledávací vzor pro porovnávání textu. Engine regulárních výrazů načte vzor a prochází vstupní řetězec zleva doprava, přičemž se pokouší o shodu na každé pozici, dokud neuspěje nebo nevyčerpá celý řetězec.

Podle MDN Web Docs jsou regulární výrazy v JavaScriptu objekty vytvořené buď pomocí literálu (/vzor/příznaky), nebo konstruktoru RegExp. Formální syntaxe a sémantika vyhledávání jsou definovány ve specifikaci jazyka ECMAScript spravované výborem TC39, zatímco širší teorie vychází z regulárních jazyků teoretické informatiky.

Většina moderních enginů, včetně těch v Chrome (V8), Node.js a .NET, implementuje porovnávání s návratem (backtracking), které podporuje funkce jako zpětné odkazy a vyhlížení (lookaround) nad rámec čistých konečných automatů.

Jak používat znakové třídy a kvantifikátory v regulárních výrazech

Znakové třídy a kvantifikátory jsou základními stavebními kameny každého regulárního výrazu. Znaková třída jako [a-z] odpovídá jakémukoli jednotlivému znaku ze zadané množiny, zatímco zkratky tříd jako \d (číslo), \w (slovní znak) a \s (bílé místo) jsou definovány ve specifikaci ECMAScript a zdokumentovány na MDN Web Docs.

Kvantifikátory řídí opakování:

  • * znamená nula nebo více
  • + znamená jeden nebo více
  • ? znamená nula nebo jeden
  • {n,m} odpovídá n až m opakování

Jejich kombinací vytvoříte přesné vzory, například \d{3}-\d{4} pro část telefonního čísla. Negované třídy jako [^0-9] odpovídají všemu kromě uvedených znaků, což vám dává přesnou kontrolu nad tím, jaký text váš vzor přijme.

Co jsou ukotvení, hranice a vyhlížení (lookaround) v regulárních výrazech?

Ukotvení a hranice odpovídají pozicím, nikoli samotným znakům, což umožňuje určovat, kde přesně musí ke shodě dojít, aniž by docházelo ke konzumaci textu. Stříška ^ ukotvuje na začátek řetězce (nebo řádku při použití víceřádkového příznaku), $ ukotvuje na konec a \b označuje hranici slova mezi slovním a neslovním znakem, jak uvádí MDN Web Docs a specifikace ECMAScript.

Tuto myšlenku dále rozšiřují konstrukce vyhlížení (lookaround): dopředné vyhlížení (?=...) a záporné dopředné vyhlížení (?!...) kontrolují text následující, zatímco zpětné vyhlížení (?<=...) a (?

Tyto konstrukce s nulovou šířkou jsou zásadní pro pravidla hesel, validaci a vyhledávání tokenů v konkrétním kontextu.

Jak používat pojmenované zachytávací skupiny a zpětné odkazy

Pojmenované zachytávací skupiny umožňují pojmenovat zachycený podřetězec pro přehlednější a lépe udržovatelné vzory. Syntaxe (?\d{4}), zavedená v JavaScriptu v ECMAScript 2018 a zdokumentovaná na MDN Web Docs, přiřazuje skupině název 'year', ke kterému lze přistupovat přes match.groups.year.

Zpětné odkazy znovu používají dříve zachycenou hodnotu dále ve stejném vzoru: \1 odkazuje na první číslovanou skupinu a \k odkazuje na pojmenovanou skupinu. Například (?['\"]).*?\k odpovídá řetězci v uvozovkách, který končí stejným znakem uvozovek, jakým začal.

Pojmenované skupiny zlepšují čitelnost oproti pozicím podle indexů, zejména u složitých vzorů pro parsování dat, URL nebo strukturovaných logů.

Jak testovat a ladit regulární výrazy pro validaci e-mailů a URL

Regulární výrazy se hojně používají k validaci a extrakci e-mailů a URL adres, i když úplná shoda se standardy RFC je překvapivě náročná. Formát e-mailu definuje RFC 5322 a jeho gramatika je natolik složitá, že ji žádný krátký regulární výraz nezachytí dokonale; MDN Web Docs a specifikace WHATWG HTML doporučují pro pole input type=email raději pragmatický vzor než striktní parser podle RFC 5322.

URL adresy řídí obecná syntaxe v RFC 3986. Pro většinu aplikací je tolerantnější vzor zachycující zjevné chyby v kombinaci se skutečným ověřením doručení nebo požadavku robustnější než vyčerpávající výraz.

Použijte tento tester k prověření svého výrazu na platných i neplatných příkladech před jeho nasazením, a předejděte tak falešně negativním výsledkům, které by mohly odmítnout legitimní vstup uživatele.

Jsou regulární výrazy bezpečné? Porozumění ReDoS a bezpečnostním rizikům

Regulární výrazy jsou pro porovnávání bezpečné, ale při neopatrně napsaných vzorech mohou představovat riziko útoku odmítnutí služby (Denial of Service). K útoku typu ReDoS (Regular Expression Denial of Service), popsanému organizací OWASP, dochází v momentě, kdy vyhodnocovací engine narazí na katastrofální backtracking u připraveného vstupu, což vede k exponenciálnímu nárůstu času a zamrznutí procesu. Klasickým spouštěčem jsou vnořené nebo překrývající se kvantifikátory u mnohoznačných vzorů, jako např. (a+)+$ vůči dlouhému řetězci znaků 'a' zakončenému neodpovídajícím znakem.

OWASP doporučuje:

  • vyhýbat se vnořeným kvantifikátorům
  • používat atomické skupiny nebo posesivní kvantifikátory tam, kde jsou podporovány
  • nastavit časové limity pro provádění (timeouts)
  • nikdy nesestavovat vzory z nedůvěryhodného uživatelského vstupu bez validace

Při spouštění regulárních výrazů proti textu pod kontrolou útočníka dávejte přednost dobře otestovaným knihovním vzorům a před nasazením otestujte nejhorší možné případy v tomto nástroji.

Jak se liší příznaky (flags) regulárních výrazů v JavaScriptu, Pythonu a PCRE?

Příznaky regulárních výrazů sdílejí napříč jazyky podobné principy, ale liší se v syntaxi a dostupných funkcích. V JavaScriptu se příznaky připojují k literálu (/vzor/gi) nebo předávají jako druhý argument konstruktoru RegExp, přičemž g, i, m, s, u a y jsou definovány ve specifikaci ECMAScript a vysvětleny na MDN Web Docs.

Modul re v Pythonu používá vnitřní příznaky jako re.IGNORECASE nebo předpony (?i) a neobsahuje příznak sticky (y). PCRE a enginy kompatibilní s Perlem používané v PHP a mnoha dalších nástrojích podporují podobné modifikátory a rozšiřující funkce.

Tento tester používá engine JavaScriptu, takže vzory se chovají přesně tak, jak budou fungovat v prohlížečích a Node.js. Při přenášení vzoru do jiného jazyka si znovu ověřte chování kvantifikátorů, zpracování Unicode a podporu zpětného vyhlížení (lookbehind), protože tyto vlastnosti se mezi implementacemi liší.

Nejčastější chyby v regulárních výrazech a jak se jim vyhnout

Nejčastější chyby v regulárních výrazech zahrnují neescapované speciální znaky, hladové kvantifikátory a zapomenuté příznaky. Metaznaky jako . ( ) [ ] { } + * ? ^ $ | \ mají speciální význam a podle specifikace ECMAScript a MDN Web Docs musí být escapovány zpětným lomítkem, pokud mají odpovídat doslovně; samotná tečka . odpovídá jakémukoli znaku, nikoli tečce.

Hladové kvantifikátory jako .+ zachytávají více textu, než bylo zamýšleno, proto při hledání mezi oddělovači používejte lenivé verze .+?. Zapomenutý příznak g vrátí pouze první shodu a vynechání ukotvení umožní vzorům odpovídat nežádoucím podřetězcům.

Mezi další úskalí patří ignorování Unicode (chybějící příznak u) a předpoklad, že zpětné vyhlížení funguje všude. Než se na jakýkoli vzor spolehnete, otestujte v tomto nástroji hraniční případy, jako jsou prázdné řetězce, nové řádky a neočekávané vstupy.

Frequently Asked Questions

sell

Tags