tigtools

Tester di regex

Inserisci un pattern e del testo per visualizzare tutte le corrispondenze evidenziate, con la relativa posizione e i gruppi di cattura. Usa il motore regex JavaScript del browser.

Funziona nel browser Nessuna registrazione

Flag

Usa $1, $2 … per i gruppi numerati, $<name> per i gruppi con nome, $& per l’intera corrispondenza e $$ per il simbolo del dollaro.

Come si usa

  1. Inserisci un’espressione regolare nel campo Pattern, senza le barre che la racchiudono.
  2. Seleziona i flag che ti servono. g (globale) trova tutte le corrispondenze, non solo la prima.
  3. Incolla il testo in cui cercare. Le corrispondenze vengono evidenziate e ciascuna è elencata con la propria posizione e i gruppi di cattura.
  4. Se vuoi, inserisci una sostituzione, per esempio $2-$1, per visualizzare un’anteprima del risultato di String.replace.

Come funziona

Il tester esegue il pattern con l’oggetto RegExp integrato nel browser, quindi i risultati corrispondono esattamente a quelli prodotti dal codice JavaScript (ECMAScript) in quel browser. Altri linguaggi usano varianti diverse delle regex: PCRE (PHP), il modulo re di Python, Java e .NET supportano funzionalità non disponibili in JavaScript, come i quantificatori possessivi (a++), i gruppi atomici ((?>…)), i modificatori inline come (?i) e la ricorsione. Inoltre, differiscono in alcuni dettagli, per esempio per gli ancoraggi \A e \Z. Prima di usare un pattern in un altro linguaggio, provalo in quel linguaggio. Il lookbehind ((?<=…)), i gruppi con nome ((?<name>…)) e le escape per le proprietà Unicode (\p{L} con il flag u) funzionano in tutti i browser attuali.

Senza il flag g o y viene trovata solo la prima corrispondenza, come con RegExp.exec. Le corrispondenze di lunghezza zero, per esempio con ^ o \b, vengono elencate ma non evidenziate; dopo ciascuna, la ricerca prosegue di un carattere (un punto di codice con il flag u), come fa String.matchAll. I gruppi di cattura sono mostrati per numero e, se definiti, per nome; se un gruppo non è stato coinvolto nella corrispondenza, viene indicato come privo di valore, a differenza di una corrispondenza vuota.

Alcuni pattern, come (a+)+$ su una riga lunga senza corrispondenze, possono richiedere un tempo esponenziale per fallire (backtracking catastrofico). Per ridurre il rischio, la ricerca inizia poco dopo che smetti di digitare, vengono esaminati solo i primi 100.000 caratteri del testo e vengono raccolte al massimo 1.000 corrispondenze. Un pattern problematico può comunque bloccare la scheda per un po’: in tal caso, semplifica il pattern o riduci la lunghezza del testo.

Esempi

Estrazione di date

Il pattern (\d{4})-(\d{2})-(\d{2}) con il flag g applicato a “Da pagare il 2026-03-15, saldato il 2026-04-02” trova due corrispondenze. Il gruppo 1 è l’anno; la sostituzione $3.$2.$1 trasforma il testo in “Da pagare il 15.03.2026, saldato il 02.04.2026”.

Gruppi con nome per un codice più leggibile

(?<key>\w+)=(?<value>[^&]*) nella stringa di query a=1&b=two mostra key e value per ogni coppia, come i valori restituiti in JavaScript da match.groups.key e match.groups.value.

Ricerca senza distinzione tra maiuscole e minuscole su più righe

^error:.* con i flag g, i e m trova ogni riga di un log che inizia con Error:, ERROR: o error:, perché m fa sì che ^ corrisponda all’inizio di ogni riga.

Domande frequenti

La mia regex funzionerà allo stesso modo in Python, PHP o Java?

Non necessariamente. Questo strumento usa il motore JavaScript. La sintassi di base è condivisa, ma alcune funzionalità, come i quantificatori possessivi, i gruppi atomici, i flag inline come (?i) e alcune sequenze di escape, sono disponibili solo in altre varianti e possono comportarsi diversamente. Prova sempre il pattern nel linguaggio di destinazione.

Perché viene trovata una sola corrispondenza?

Il flag g (globale) è disattivato. Senza questo flag, JavaScript restituisce solo la prima corrispondenza. Seleziona g per trovarle tutte.

Devo inserire le barre attorno al pattern?

No. Inserisci solo il pattern, per esempio \d+ e non /\d+/g, e seleziona i flag tramite le caselle di controllo. Sotto i risultati viene mostrata la sintassi letterale JavaScript, pronta da copiare nel codice.

Perché la pagina è diventata lenta con il mio pattern?

I quantificatori annidati, come (a+)+ o (.*)*, possono costringere il motore a provare un numero esponenziale di percorsi quando non trova corrispondenze. Rendi il pattern più specifico, per esempio sostituendo .* con [^,]*, oppure usa degli ancoraggi. Per ridurre l’impatto, il tester limita il testo a 100.000 caratteri.

Privacy

Il pattern e il testo vengono elaborati solo nel browser, tramite il suo motore JavaScript. Non vengono caricati, salvati né inclusi nelle statistiche.