Tutorial
Come provare una regex senza installare nulla
Hai scritto un pattern e devi sapere se corrisponde davvero a ciò che ti aspetti prima di inserirlo nel codice. Installare uno strumento da desktop o incollare un log privato in un sito a caso è eccessivo, e spesso rischioso. Questa guida mostra come eseguire una regex sul tuo testo direttamente nel browser, attivare i flag che ne cambiano il comportamento, leggere i gruppi di cattura che estrae e vedere le corrispondenze evidenziarsi in linea, senza che il pattern o il testo lascino mai la tua scheda.
Passo dopo passo
- Apri il tester di regex e digita il tuo pattern nel campo tra le due barre. Le barre non le scrivi tu: lo strumento le mostra così vedi il pattern come lo legge un motore. Incolla il tuo testo di esempio nel riquadro sottostante, per esempio alcune righe di log, un elenco di indirizzi e-mail o un blocco di codice che vuoi esaminare.

- Imposta i flag nel piccolo riquadro accanto al pattern. Il flag g trova ogni corrispondenza invece di fermarsi alla prima; i rende la corrispondenza non sensibile alle maiuscole; m fa sì che le ancore ^ e $ corrispondano all'inizio e alla fine di ogni riga anziché all'intero testo; s fa sì che il punto corrisponda anche agli a capo. Combinali liberamente, per esempio gim.
- Premi Prova. Ogni corrispondenza viene evidenziata direttamente nel tuo testo, e l'elenco sottostante mostra ogni corrispondenza con la sua posizione e il valore di ciascun gruppo di cattura. Modifica il pattern ed eseguilo di nuovo: l'anteprima si aggiorna così puoi restringere il pattern finché non cattura esattamente ciò che intendevi e nient'altro.

Gruppi di cattura, con nome e numerati
Un gruppo di cattura è la parte del pattern racchiusa tra parentesi, ed è il modo in cui estrai un frammento da ogni corrispondenza invece di limitarti a confermare che il tutto corrisponde. I gruppi numerati si contano da sinistra a destra in base alla parentesi di apertura: in (\d{4})-(\d{2})-(\d{2}) il gruppo 1 è l'anno, il gruppo 2 il mese, il gruppo 3 il giorno. I gruppi con nome usano la sintassi (?<name>...), così (?<year>\d{4}) si legge molto meglio di un semplice numero quando il pattern cresce. Se vuoi solo raggruppare senza catturare, per esempio per applicare un quantificatore a più caratteri, usa un gruppo non catturante (?:...) così da non affollare l'elenco dei risultati. Il tester mostra il valore di ogni gruppo per ogni corrispondenza, ed è il modo più rapido per confermare che stai estraendo la porzione giusta.
Quando un pattern si blocca o si comporta male
Due problemi tornano di continuo. Il primo è il backtracking catastrofico: un pattern come (a+)+$ eseguito su una lunga stringa che non corrisponde può portare il motore a tentare un numero esponenziale di percorsi e a bloccarsi. Il tester esegue ogni prova in un Web Worker con un breve watchdog, così invece di una scheda bloccata ricevi un messaggio chiaro e puoi semplificare il pattern, di solito rendendo un quantificatore possessivo nello spirito, ancorandolo o evitando la ripetizione annidata. Il secondo è la corrispondenza greedy contro lazy: per impostazione predefinita .* prende quanto più può, quindi per far corrispondere il contenuto di un singolo tag HTML conviene la forma lazy .*?. Se stai confrontando due versioni leggermente diverse di una stringa per capire cosa dovrebbe puntare il pattern, lo strumento di confronto del testo le allinea così la differenza è evidente prima di scrivere l'espressione.
Come il browser valuta la regex
I browser moderni includono un motore regex ECMAScript nativo che supporta l'intero set di flag: corrispondenza senza distinzione tra maiuscole e minuscole (i), modalità multilinea (m), dotAll (s), Unicode (u) e il flag sticky (y). Quando si digita uno schema nel tester, il motore lo compila in un NFA interno e lo valuta sulla stringa di test in tempo reale, riportando ogni posizione di corrispondenza e tutti i gruppi di cattura. Il backtracking avviene localmente sulla CPU: uno schema come (a+)+ su una lunga stringa non corrispondente può girare per secondi, e vedere quel rallentamento nel browser è un feedback utile prima di distribuire lo schema nel codice di produzione. Nessun testo lascia la pagina, quindi è possibile incollare campioni di log o qualsiasi input senza instradarlo attraverso un server di terze parti.
Gli strumenti usati in questa guida
Domande frequenti
Il mio pattern o il testo di prova vengono inviati a un server?
No. La regex viene eseguita in un Web Worker nel tuo browser, quindi il pattern e il testo su cui fai la prova restano nella scheda. Questo conta perché il testo che incolli è spesso un log reale, un elenco di clienti o una configurazione interna, esattamente il tipo di dati che non vuoi sul server di qualcun altro. Apri il pannello Rete negli strumenti per sviluppatori mentre premi Prova e non vedrai alcuna richiesta portare via il tuo testo. Continua inoltre a funzionare offline una volta caricata la pagina.
Quale variante di regex usa il tester?
Usa il motore di espressioni regolari JavaScript integrato nel tuo browser, lo stesso che gira in Node.js e in qualsiasi pagina web. Copre la sintassi comune: classi di caratteri, quantificatori, ancore, alternanza, gruppi di cattura numerati e con nome, lookahead e lookbehind. Alcune funzionalità di altre varianti, come la ricorsione in stile Perl o i quantificatori possessivi, non fanno parte del motore JavaScript, quindi se un pattern copiato da un progetto PHP o Python si comporta in modo diverso, di solito la causa è proprio questa differenza di variante.