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
- Comparatore — confronta prima/dopo quando rifattorizzi pattern
- Formatter JSON — per testare pattern contro payload API