Cosa fa un tester regex
Un tester regex ti fa provare un’espressione regolare su un testo vero. Un’espressione regolare, o regex, è un piccolo linguaggio di pattern per trovare testo. \d{4} significa “quattro cifre di fila”. [\w.+-]+@ significa “uno o più caratteri di parola, punti, segni più o trattini, seguiti da una @”. Le regex si usano per trovare e sostituire negli editor di codice, per la convalida dei moduli, l’analisi dei log e la pulizia dei dati.
È facile sbagliare un pattern di poco. Con un tester provi il pattern su un testo di esempio reale e vedi esattamente cosa cattura prima di metterlo in uno script. Questo mostra le corrispondenze mentre scrivi, elenca ogni gruppo di cattura e mostra un’anteprima della sostituzione.
Come usare il tester regex
- Scrivi il pattern in Espressione regolare. Non mettere le barre: le mostra lo strumento, con i flag attivi dopo la barra di chiusura.
- Attiva o disattiva i flag con i pulsanti g, i, m, s, u e y.
- Incolla o scrivi un testo di esempio in Testo di prova.
- Leggi il risultato in Corrispondenze. Ogni corrispondenza è evidenziata e il contatore mostra quante ne sono state trovate.
- Controlla Dettagli delle corrispondenze e gruppi per la posizione di ogni corrispondenza e il testo catturato da ogni gruppo.
- Per provare un trova e sostituisci, scrivi in Sostituisci con. Il testo modificato compare in Risultato, pronto da copiare.
Non sai da dove partire? Scegli una voce da Pattern comuni. Ci sono pattern per indirizzi email, indirizzi web, date, indirizzi IPv4, colori esadecimali, numeri di telefono, numeri e doppi spazi. Tieni conto che il pattern per i numeri di telefono segue il formato statunitense, quello per le date il formato aaaa-mm-gg, e quello per i numeri usa il punto come separatore decimale: su 3,50 trova 3 e 50 come due numeri separati.
I flag
| Flag | Nome | Cosa cambia |
|---|---|---|
| g | global | Trova tutte le corrispondenze, non solo la prima |
| i | ignore case | hello trova anche Hello e HELLO |
| m | multiline | ^ e $ corrispondono all’inizio e alla fine di ogni riga |
| s | dot all | . corrisponde anche a un a capo |
| u | unicode | Legge un’emoji come un solo carattere e ammette le classi \p{...} |
| y | sticky | Ogni corrispondenza deve iniziare esattamente dove è finita la precedente |
Esempi
Questi risultati vengono dall’esecuzione dei pattern in questo strumento.
| Pattern | Flag | Testo | Corrispondenze |
|---|---|---|---|
\d+ |
nessuno | a1 b22 c333 |
1 |
\d+ |
g | a1 b22 c333 |
1, 22, 333 |
hello |
gi | Hello hello HELLO |
Hello, hello, HELLO |
^\w+ |
gm | due righe: one two e three four |
one, three |
a.b |
g | a, a capo, b |
nessuna corrispondenza |
a.b |
gs | a, a capo, b |
una corrispondenza |
La pagina si apre con un esempio sulle date. Il pattern (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) trova tre date nel testo di esempio: 2026-10-31, 2024-01-15 e 2026-11-02. La sostituzione $<day>/$<month>/$<year> trasforma la prima in 31/10/2026, cioè nel formato italiano. Per la direzione opposta, il pattern (\d{2})/(\d{2})/(\d{4}) con la sostituzione $3-$2-$1 trasforma 31/10/2026 in 2026-10-31.
Una sostituzione è utile anche per fare pulizia. Il pattern \s{2,} con un solo spazio come sostituzione trasforma too many spaces in too many spaces.
Come funziona
Il tester costruisce un RegExp JavaScript a partire dal tuo pattern e dai flag, poi lo esegue sul testo di prova. Con il flag g continua a cercare fino alla fine. Salta anche le corrispondenze vuote, così un pattern come x* non può andare in loop all’infinito.
Il testo viene trasformato in caratteri sicuri prima di essere evidenziato. Qualsiasi HTML o script nel tuo testo di esempio viene mostrato come semplici caratteri e non viene mai eseguito.
La ricerca avviene in un Web Worker, un thread in background. Se un pattern gira per più di 1 secondo, il worker viene fermato e ne parte uno nuovo. Invece di una scheda bloccata, vedi un messaggio.
Se un pattern non è valido, vedi “Pattern non valido:” seguito dal messaggio di errore del browser, che resta in inglese. Per esempio, una ( da sola dà “Unterminated group” (gruppo non chiuso).
Consigli e limiti
- Attenzione alle ripetizioni annidate. Pattern come
(a+)+$o(\w+\s?)*$possono richiedere un tempo enorme su un testo che corrisponde quasi. Si chiama backtracking catastrofico. Fai in modo che ogni parte corrisponda a qualcosa di preciso, ed evita una ripetizione dentro un’altra. - Fai l’escape dei caratteri speciali. Per trovare un punto vero, scrivi
\.. Lo stesso vale per? * + ( ) [ ] { } ^ $ |e per la barra rovesciata stessa. - Ancora i pattern di convalida. Per un campo di un modulo, racchiudi il pattern tra
^e$così deve corrispondere tutto il valore, non solo una parte. - Attenzione alle lettere accentate. In JavaScript
\wcomprende solo lettere ASCII, cifre e trattino basso, anche con il flag u. Superché la città è più bella,\w+trovaperch,la,citt,piebella, e\bcittà\bnon trova niente perché\bnon vede la à come lettera. Per le parole italiane usa\p{L}+con il flag u: trovaperché,la,città,è,piùebella. - Una regex non è un vero parser. Va bene per individuare email o date in un testo. Non è un modo affidabile per analizzare l’HTML o per verificare che un indirizzo email esista davvero.
- I risultati molto grandi vengono limitati. Lo strumento elenca fino a 5.000 corrispondenze e mostra le prime 300 righe nella tabella dei dettagli.
Altri modi per provare una regex
Dalla riga di comando, grep -oE stampa ogni corrispondenza su una riga:
echo 'Call 555-010-9999 on 2026-10-31' | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
Questo stampa 2026-10-31. In Python, re.findall(r'\d{4}-\d{2}-\d{2}', 'from 2026-10-31 to 2024-01-15') restituisce ['2026-10-31', '2024-01-15']. In JavaScript usa text.match(/pattern/g), oppure text.matchAll() per i gruppi.
Strumenti correlati
Per ripulire i titoli da usare negli indirizzi web, usa il generatore di slug. Per rendere sicuro un testo dentro un link, usa il codificatore e decodificatore di URL.