Un tester di espressioni regolari che spiega cosa trova
Un'espressione regolare, o regex, descrive la forma di un testo: «cinque cifre», «una parola ripetuta», «una data nel formato AAAA-MM-GG». Serve per cercare in un file di log, convalidare un campo di un modulo, estrarre dati da un'esportazione o fare un trova e sostituisci su un intero progetto.
Scrivi la regex in «Espressione», spunta le «Opzioni» e incolla il «Testo di prova». Le «Corrispondenze evidenziate» si aggiornano mentre scrivi, in due colori alternati e sottolineati, così due risultati attaccati restano distinguibili. La tabella riporta per ciascuna la posizione (contata da 0), il valore e i gruppi, numerati e con nome.
L'espressione segue la sintassi JavaScript ed è eseguita dal motore del tuo browser. Non viene inviato nulla: il calcolo avviene sul tuo dispositivo.
Come si usa
- Scrivi un'espressione come
\d+e spunta «g: tutte le corrispondenze». - Con il testo
a1b22c333, lo strumento indica «3 corrispondenze»:1in posizione 1,22in posizione 3 e333in posizione 6. - Passa a «Sostituisci» per vedere il risultato di una sostituzione, oppure a «Dividi» per spezzare il testo a ogni corrispondenza.
- Leggi la «Spiegazione dell'espressione, elemento per elemento», poi copia il codice pronto o il link da condividere.
Promemoria della sintassi
| Scrittura | Significato |
|---|---|
\d \w \s | una cifra; una lettera non accentata, una cifra o _; uno spazio bianco |
[a-z], [^0-9] | un carattere dell'elenco, un carattere fuori dall'elenco |
* + ? {2,4} | 0 o più volte, 1 o più volte, facoltativo, da 2 a 4 volte |
^ $ \b | inizio, fine, confine di parola |
( ) (?: ) (?<nome> ) | gruppo di cattura, non catturante, con nome |
(?= ) (?! ) (?<= ) (?<! ) | lookahead e lookbehind, positivi o negativi |
g i m s u y d | opzioni: globale, ignora maiuscole, multiriga, punto universale, Unicode, aderente, posizioni dei gruppi |
Esempi esatti
L'espressione (?<anno>\d{4})-(?<mese>\d\d) applicata a 2026-03 dà il gruppo 1 «anno» = 2026 e il gruppo 2 «mese» = 03. In «Sostituisci con», $<mese>/$<anno> produce 03/2026; $1 inserisce il gruppo 1 e $& l'intera corrispondenza.
Il lookbehind (?<=€ ?)\d+ trova 15 in «€ 15 oppure 20 euro», perché solo il primo numero segue il simbolo dell'euro. Con l'opzione u, \p{L}+ prende «città» e «perché» per intero, mentre \w+ si ferma alle lettere accentate. Nella vista «Dividi», [,;]\s* spezza «mela, pera;kiwi» in tre parti.
La spiegazione scompone anche un numero di telefono italiano come ^(?:\+39)?(?:3\d{8,9}|0\d{5,10})$: inizio del testo, +39 facoltativo, poi un cellulare che inizia con 3 oppure un fisso che inizia con 0, fine del testo.
Trappole frequenti
- Greedy o lazy. Su
<b>grassetto</b>,<.+>prende tutto in un solo blocco, mentre<.+?>trova<b>e poi</b>. - Escape. Il punto significa «qualsiasi carattere»: per un punto vero scrivi
\.. In una stringa nel codice sorgente la barra rovesciata va spesso raddoppiata; il codice generato lo fa per te. - Backtracking catastrofico.
(a+)+$su trenta «a» seguite da una «b» prova miliardi di suddivisioni. Lo strumento esegue ogni espressione a parte e la interrompe dopo un secondo con il messaggio «Espressione troppo onerosa»: la pagina resta reattiva.
I motori regex si somigliano molto, ma alcune costruzioni (gruppi con nome, lookbehind, \p{…}) cambiano o mancano a seconda del linguaggio: prova sempre anche nel tuo ambiente finale.
Consigli
Prova l'espressione su esempi diversi, compresi quelli che non devono corrispondere: una data come 2026-02-30, un CAP di quattro cifre, un indirizzo senza punto. Non cercare di convalidare un'e-mail alla perfezione con una regex: un'espressione semplice basta per individuare gli errori di battitura, e solo un messaggio di conferma dimostra che l'indirizzo esiste.
Domande frequenti
Perché la mia regex funziona qui e non nel mio programma?
Lo strumento usa il motore JavaScript del browser. In Python, PHP o Java alcuni dettagli cambiano: usa «Codice pronto da copiare», che adatta i gruppi con nome e l'escape, e leggi le note aggiunte come commento.
A cosa serve l'opzione g?
Senza, la ricerca si ferma alla prima corrispondenza e la sostituzione cambia solo quella. Con g, tutte vengono trovate e sostituite.
Come condivido un'espressione?
«Copia il link» mette espressione, opzioni e testo di prova (fino a 1.000 caratteri) dopo il segno # dell'indirizzo. Quella parte non viene mai inviata al server.
Che cosa vuol dire «(non usato)» per un gruppo?
Il gruppo esiste nell'espressione ma non ha partecipato a quella corrispondenza, per esempio il ramo non scelto di un'alternativa (a)|(b).