Tester regulárních výrazů
Regulární výrazy s textem shody se vzorem pro ověření, hledání-nahrazení a analýzu protokolu. Před vložením do produkčního kódu otestujte vzory s živým zvýrazněním — vyhněte se katastrofickým překvapením při zpětném sledování při vstupu uživatele.
Vzor
Příznaky
Testovací text
Výstup
[0] Hello
[6] world
[12] 123
Jak otestovat regulární výraz
1. Zadejte vzor regulárního výrazu (bez vnějších lomítek nebo s příznaky).
2. Nastavit příznaky: g globální, i nerozlišují malá a velká písmena, m víceřádkové.
3. Vložte ukázkový text do oblasti testovacího řetězce.
4. Zkontrolujte shody, zachyťte skupiny a nahraďte náhled, pokud je k dispozici.
Příklady regulárních výrazů
Ověření e-mailem
^[\\w.-]+@[\\w.-]+\\.\\w+$ zachycuje jednoduché e-maily — není to dokonalé RFC, ale užitečné pro formuláře.
Extrahujte data ISO
\\d{4}-\\d{2}-\\d{2} najde v řádcích protokolu 2024-03-15 pro nahrazení grep.
Pomocník Slugify
Nahraďte [^a-z0-9]+ pomlčkou pro URL slug z řetězce názvu.
Když regulární výraz pomáhá
• Při ověřování strukturovaných řetězců (telefon, PSČ).
• Při analýze polostrukturovaných protokolů.
• Když se učíte zachycovat skupiny a nahlížet dopředu.
Kdy se vyhnout regulárnímu výrazu
• Při analýze HTML nebo JSON — používejte správné analyzátory.
• Když se regulární výraz stane nečitelným — rozdělit na logiku kódu.
• Když ReDoS riskuje na vzorech zadaných uživatelem na serveru — časový limit a omezení délky.
Povědomí o ReDoS
Vnořené kvantifikátory jako (a+)+ na zlém řetězci visí CPU — vyhněte se uživatelskému regulárnímu výrazu na serveru nebo použijte bezpečné motory s časovými limity.
Ověřit vs extrakt
Ukotvený vzor ^...$ ověří celý řetězec; neukotvený najde podřetězec kdekoli.
Nahradit v editorech
Kód VS používá podobný regulární výraz JS ve funkci find-replace — otestujte zde a poté vložte vzor.
Časté dotazy
Jaká příchuť regulárního výrazu?
JavaScript RegExp — existují rozdíly PCRE (podpora vzhledu se liší podle verze enginu).
Globální příznak g?
Najde všechny shody nejen jako první — testStateful s lastIndex v JS.
Uniknout speciálním znakům?
. * + ? [ ] ( ) { } | \\ ^ $ potřebuje escapování pro doslovnou shodu.
Zachytit skupiny?
Závorky ( ) vytvářejí očíslované skupiny přístupné za $1 $2.
Místní?
Ano.
Víceřádkový ^ $?
příznak m způsobí, že ^ $ odpovídá hranicím řádku ne celému řetězci.