Regex Tester
Testa regex JavaScript con evidenziazione live, gruppi di cattura e anteprima replace.
Matches in text
Capture groups
| # | Offset | Match | Group |
|---|---|---|---|
|
—
|
Replace preview
Quick reference
\d
Digit (0–9)
\w
Word char (a-z, 0-9, _)
\s
Whitespace
[^abc]
Anything except a/b/c
^/$
Start / end of line (with m flag)
a*
Zero or more
a+
One or more
a?
Zero or one
a{n,m}
Between n and m repetitions
(?<name>…)
Named capture group
(?=…)
Lookahead
(?<=…)
Lookbehind
Informazioni su questo strumento
Regex Tester valuta espressioni regolari JavaScript contro un corpo di testo di prova e evidenzia ogni match in posizione. Il campo del pattern accetta la sintassi regex ECMAScript completa — anchor, classi di caratteri, alternanza, lookahead, lookbehind, named capture group, Unicode property escapes — con toggle separati per i flag standard (g global, i ignore case, m multiline, s dot-matches-newline, u Unicode, y sticky). I match sono codificati a colori e i capture group sono elencati sotto l'evidenziazione per ciascuno.
Oltre al matching, lo strumento può eseguire un'anteprima replace affiancata all'originale — si digita la stringa di sostituzione (con backreference $1 / $<name>) e si vede esattamente cosa produrrà la regex contro l'input di prova. Ogni operazione viene eseguita nel browser con il motore RegExp nativo, quindi ciò che si esegue il debug qui è esattamente ciò che si esegue in JavaScript di produzione (Node, Bun, Deno, ogni browser).
Quando usare questo strumento
- Costruire validatori di input. Pattern per email, numeri di telefono, codici postali — progettare e verificare con dati di test realistici prima di portarli nel codice.
- Parsing di file di log. Iterare un pattern multi-group capture contro righe di log reali finché ogni campo esce pulito.
- Modifica in massa. Testare un pattern find/replace prima di eseguirlo su centinaia di file nell'editor.
- Imparare le regex. Match evidenziati più feedback istantaneo è il modo più rapido per interiorizzare lookaround, anchor e backreference.
Sui dialetti regex
Questo strumento usa regex JavaScript (ECMAScript 2018+). PCRE, Python, .NET, Go e Java differiscono tutti leggermente — PCRE supporta pattern ricorsivi che JavaScript non ha, il modulore di Python manca di lookbehind in alcune versioni, Go usa RE2 che vieta del tutto le backreference. Se si punta a un ambiente non JS, ricontrollare le funzionalità specifiche del dialetto sul lato ricevente. Per pattern puramente ECMAScript-compatibili questo strumento è autoritativo.
Domande frequenti
Qual è la differenza tra i flag g, m e s?
g (global) fa sì che .match() e .replace() trovino ogni match anziché solo il primo. m (multiline) fa sì che ^ e $ corrispondano alle interruzioni di riga all'interno dell'input, non solo all'inizio/fine dell'intera stringa. s (dotall) fa sì che . corrisponda anche ai newline (il comportamento predefinito è saltarli). Sono indipendenti — si combinano come necessario.
Perché il mio lookbehind non funziona?
(?<=...) richiede ECMAScript moderno (2018+) ed è disponibile in tutti i browser evergreen attuali e Node 10+. I runtime più vecchi (IE 11, Safari prima della 16.4, Node molto vecchio) rifiutano il pattern al momento della compilazione. Il nostro tester usa il motore del browser, quindi se il tester funziona ma il runtime di destinazione fallisce, il target è troppo vecchio. Soluzione alternativa: riscrivere senza lookbehind utilizzando un gruppo non-capturing e uno slice.
Come testo contro una stringa lunga?
Cos'è il "catastrophic backtracking"?
(a+)+ contro una stringa lunga che termina con un non-match. Il motore regex tenta ogni permutazione prima di arrendersi. I motori JavaScript moderni non hanno un timeout, quindi la pagina può bloccarsi. Correzione: riscrivere senza quantificatori nidificati, utilizzare gruppi possessivi via (?:a+) o ancorare il pattern in modo più rigoroso.