TK
Strumenti per dev

Tester regex

Testa espressioni regolari JavaScript con evidenziazione delle corrispondenze, gruppi di cattura e timeout in Web Worker contro il backtracking catastrofico.

Pattern/
  • \bWord boundary — matches between a word character and a non-word character.
  • Quantifier +Match the previous token one or more times (greedy).
    • Character classMatches a single character that is one of: `\w.%+-`.
  • Literal "@"Matches the character `@` literally.
  • Quantifier +Match the previous token one or more times (greedy).
    • Character classMatches a single character that is one of: `\w.-`.
  • Escaped "."Matches the character `.` literally (escaping its special meaning).
  • Quantifier {2,}Match the previous token a number of times specified by `{2,}`.
    • Character classMatches a single character that is one of: `A-Za-z`.
  • \bWord boundary — matches between a word character and a non-word character.
Testo di test
Risultato
Scrivi un pattern e un testo di test per vedere le corrispondenze.

Gli input restano su questo dispositivo. Ogni strumento per dev di TaskKit gira interamente nel tuo browser. Token, payload e testo incollato non vengono trasmessi ai server di TaskKit né a terze parti.

Cosa fa questo strumento

Un tester di espressioni regolari JavaScript con evidenziazione delle corrispondenze in tempo reale, dettaglio dei gruppi di cattura e protezione contro il backtracking catastrofico. L'input dei flag accetta il set standard (g i m s u y), e le corrispondenze sono elencate con i loro indici di inizio e fine e qualsiasi gruppo nominato o numerato.

Quando usarlo

  • Bozzare una regex contro un campione rappresentativo prima di incollarla nel codice.
  • Confermare cosa una regex di qualcun altro corrisponda davvero (e cosa no).
  • Stringere un pattern che era troppo greedy o troppo permissivo in produzione.
  • Esercitarsi specificamente con il flavor JavaScript, dato che ogni linguaggio ha una semantica leggermente diversa.

Come funziona

Il pattern viene compilato con new RegExp(pattern, flags) e poi lanciato contro il testo di test. Il matching avviene in un Web Worker con un timeout di 1 secondo — se il pattern scatena backtracking catastrofico sull'input fornito, il worker viene terminato e vedi un errore « regex took too long » invece di un tab congelato. Questo è una preoccupazione reale per pattern come (a+)+b contro lunghi input di a.

Note

Perché serve un Web Worker? I motori regex dei browser non espongono un timeout, e una singola regex lenta può tenere il thread principale appeso per decine di secondi. Eseguire il matching dentro un Worker significa che possiamo fare worker.terminate() e restare reattivi.

Supporta funzionalità Perl/PCRE? No — solo ciò che JavaScript supporta. \K, gruppi atomici, quantificatori possessivi e pattern ricorsivi non fanno parte della grammatica regex JS. Lookbehind e gruppi nominati sì.

La mia regex corrisponde in questo strumento ma non nel mio codice. Controlla i flag. Il flag u cambia come alcune classi di caratteri matchano Unicode; il flag g influenza lo stato tra chiamate quando riusi l'oggetto regex.

Strumenti correlati