Tester di espressioni regolari (regex) con sostituzione
Testa una regex JavaScript sul tuo testo: corrispondenze evidenziate, posizioni, gruppi catturati, sostituzione con $1 e $2, simboli spiegati e pattern pronti.
Capire una regex: gruppi di cattura, $1 e sostituzione
Ogni coppia di parentesi di un'espressione regolare cattura un pezzo della corrispondenza, numerato da sinistra a destra ($1, $2…), che la sostituzione può riutilizzare. Lo strumento evidenzia le corrispondenze nel testo, dettaglia i gruppi catturati di ciascuna, nomina gli elementi di sintassi presenti nel pattern e fornisce il codice JavaScript equivalente.
I gruppi di cattura in pratica
Il pattern predefinito ([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,}) contiene due gruppi: $1 cattura la parte prima della chiocciola, $2 il dominio. Sul testo di esempio, con i flag gi, lo strumento trova 3 indirizzi; per support@kristools.com, $1 vale support e $2 kristools.com. La sostituzione [$1 at $2] dà «[support at kristools.com]». Un gruppo che inizia con (?: raggruppa senza catturare: non riceve un numero.
Esempio: convertire date ISO nel formato italiano
Il pattern «Data ISO» cattura l'anno, il mese e il giorno in tre gruppi. Sulla frase di esempio, trattiene 2026-08-25 e 2026-12-31 e ignora 2026-13-40, mese impossibile. La sostituzione $3/$2/$1 produce 25/08/2026 e 31/12/2026.
Che cosa mostra lo strumento
- Le corrispondenze evidenziate nel testo, con la posizione di inizio e di fine.
- Per ciascuna, l'elenco $1, $2… dei gruppi catturati.
- Un'analisi che nomina gli elementi individuati nel pattern: ^, $, \d, \w, \s, \b, i quantificatori +, * e ?, i gruppi e le classi tra parentesi quadre.
- Il pulsante «JS Code», che copia
const regex = /pattern/flag;seguito da una chiamata atext.match(regex).
Gli otto pattern proposti (e-mail, URL, telefono francese, data ISO, IPv4 limitato a 0-255, colore esadecimale, UUID v4, tag HTML) caricano anche un testo di prova adatto.
Limiti
- L'analisi individua caratteri, non legge la struttura: un + posto in una classe come
[+-]viene comunque descritto come quantificatore. Le graffe{n,m}, l'alternativa|, il punto e le asserzioni lookahead o lookbehind non vengono spiegati. - Una barra non preceduta da escape nel pattern rende non valido il codice JavaScript copiato: scrivi
\/. - Con il flag g, l'elenco si ferma a 1.000 corrispondenze.
Per oscurare e-mail, UUID o tag in un testo, carica il pattern desiderato, inserisci il testo di sostituzione e copia il risultato con il pulsante posto sopra la stringa ottenuta.
Domande frequenti
Come usare $1 e $2 in una sostituzione regex?
$1 riprende il testo catturato dalla prima coppia di parentesi, $2 dalla seconda, contando le parentesi aperte da sinistra a destra. Con il pattern predefinito e la sostituzione [$1 at $2], support@kristools.com diventa [support at kristools.com].
Che differenza c'è tra (...) e (?:...)?
(...) cattura il testo e gli assegna un numero riutilizzabile ($1, $2…). (?:...) si limita a raggruppare, per esempio per applicare un quantificatore a più caratteri, senza creare un gruppo numerato. Sostituire un gruppo inutile con (?:...) evita di spostare la numerazione dei successivi.
Come convertire una data AAAA-MM-GG in GG/MM/AAAA con una regex?
Cattura le tre parti con \b(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b e sostituisci con $3/$2/$1. 2026-08-25 diventa 25/08/2026, e 2026-13-40 viene ignorata perché il mese 13 non esiste. Il giorno 31 resta accettato per tutti i mesi: 2026-02-31 passa.
Il codice JavaScript copiato funziona direttamente?
Sì per la maggior parte dei pattern: lo strumento copia const regex = /pattern/flag; e poi text.match(regex). Se il pattern contiene una barra non preceduta da escape, il letterale diventa non valido: scrivi \/ al posto di /. Con il flag g, match restituisce l'elenco delle corrispondenze senza i gruppi; usa matchAll per ottenerli.
Perché la mia regex trova una sola corrispondenza?
Il flag g (global) è probabilmente disattivato. Senza di esso, JavaScript si ferma alla prima corrispondenza, sia per la ricerca sia per la sostituzione. Attiva g per ottenere tutte le occorrenze.
Quale regex per riconoscere un numero di telefono francese?
Il pattern proposto è (?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}. Riconosce 06 12 34 56 78 così come +33 1.23.45.67.89: prefisso +33, 0033 o 0, una cifra da 1 a 9, poi quattro coppie di cifre separate o meno da spazi, punti o trattini.
Come oscurare tutti gli indirizzi e-mail di un testo con una regex?
Carica il pattern e-mail, tieni attivo il flag g e inserisci [E-MAIL OSCURATA] nel campo di sostituzione. Sull'esempio caricato, i 2 indirizzi completi vengono sostituiti e invalid@email, senza estensione di dominio, resta intatto. Il pulsante di copia recupera il testo ottenuto.
Il pattern IPv4 verifica che un indirizzo IP sia valido?
Sì per l'intervallo di ogni ottetto: il pattern ripete quattro volte l'alternativa 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?, che limita ogni numero a 0-255. 192.168.1.50 viene riconosciuto, 999.300.1.1 no. Non dice invece se l'indirizzo è privato o pubblico.
Lo strumento è davvero gratuito?
Sì, tutti gli strumenti di Kristools sono gratuiti al 100% e accessibili senza registrazione.
I miei dati sono protetti?
Sì. Tutte le elaborazioni vengono eseguite direttamente e in modo sicuro nel tuo browser. Nessun dato personale viene inviato ai nostri server.