Un regex tester ti permette di scrivere un'espressione regolare e vedere subito cosa trova in un testo di prova. Gli sviluppatori usano le regex (espressioni regolari) per validare input, estrarre dati da stringhe, cercare nei log, ripulire testo, creare comandi nell'editor e scrivere regole di cerca e sostituisci.
All'inizio le regex sembrano criptiche perché pochi simboli hanno moltissimo significato. Un tester live le rende chiare: ogni carattere che digiti aggiorna le corrispondenze evidenziate e i gruppi di cattura, così puoi sperimentare finché il pattern fa esattamente quello che vuoi.
Ogni linguaggio di programmazione usa un motore regex leggermente diverso (JavaScript, PCRE, Python, Java, Go, .NET). Le basi, cioè caratteri, classi di caratteri, quantificatori, ancore e gruppi, funzionano ovunque. Le funzioni avanzate (lookbehind, gruppi con nome, quantificatori possessivi) sono il punto in cui i motori si differenziano.
Cosa impari provando le regex
Un pattern descrive la *forma* del testo, non il suo significato. \d+ trova una sequenza di cifre, ma non sa se il numero ha senso.
I flag cambiano il comportamento: g trova tutte le corrispondenze, i ignora maiuscole e minuscole, m fa corrispondere ^ e $ a inizio e fine riga, s permette a . di corrispondere ai ritorni a capo.
I gruppi di cattura (...) estraggono parti di una corrispondenza, invece di controllare solo se l'intera stringa corrisponde: sono essenziali per il parsing.
I quantificatori sono *greedy* (avidi) per impostazione predefinita: prendono il più possibile. Aggiungendo ? diventano *lazy* (pigri) e prendono il meno possibile.
Come usare il regex tester passo per passo
1
Scrivi il tuo pattern
Inserisci un'espressione regolare nel campo del pattern. Non includere le barre / intorno: sono sintassi letterale di JavaScript, non fanno parte del pattern.
2
Attiva i flag che ti servono
Di solito vorrai g (trova tutte le corrispondenze) e i (ignora maiuscole e minuscole). Usa m per ancore riga per riga e s per far corrispondere . anche ai ritorni a capo.
3
Incolla il testo di prova
Inserisci un testo di esempio nell'area di prova. Le corrispondenze si evidenziano mentre scrivi e i gruppi di cattura compaiono sotto l'elenco delle corrispondenze.
4
Leggi il pannello delle corrispondenze
Ogni corrispondenza mostra la posizione, il testo completo e gli eventuali gruppi catturati. Usalo per verificare che il pattern prenda quello che vuoi e scarti quello che non vuoi.
5
Rifinisci finché è corretto
Restringi i quantificatori, aggiungi ancore (^, $) o fai l'escape dei caratteri letterali (\., \?) finché corrispondenze e gruppi sono esattamente quelli che servono al tuo codice.
Cheat sheet delle regex
L'80% delle regex che userai il 99% delle volte. Salvala nei preferiti: è il modo più rapido per ricordare la sintassi. Per la grammatica completa, consulta la guida alle espressioni regolari di MDN.
Token
Significato
Esempio
.
Qualsiasi carattere (tranne il ritorno a capo)
a.c trova abc, a-c
\d\D
Cifra / non cifra
\d+ trova 123
\w\W
Carattere di parola (lettera/cifra/_) / non di parola
\w+ trova hello_1
\s\S
Spazio bianco / non spazio bianco
\s+ trova spazi e tabulazioni
[abc]
Uno tra a, b o c
[aeiou] trova una vocale
[^abc]
Nessuno tra a, b o c
[^0-9] trova le non cifre
*+?
0+, 1+, 0 o 1 del precedente
a+ trova a, aaa
{n}{n,m}
Esattamente n / tra n e m
\d{3,5} da 3 a 5 cifre
^$
Inizio / fine della stringa (o della riga con m)
^Error la riga inizia con Error
(...)
Gruppo di cattura
(\d+) cattura le cifre
(?:...)
Gruppo non catturante
(?:foo|bar) raggruppa senza catturare
a|b
Alternativa: a oppure b
yes|no
\b
Confine di parola
\bcat\b trova cat ma non cats
Esempi di regex da provare
Riconoscere la forma base di un'email
Pattern
^[\w.+-]+@[\w-]+\.[\w.-]+$
Testo
learner@coddy.tech
Questo cattura la forma base qualcosa@qualcosa.qualcosa. La validazione reale delle email è molto più permissiva: nei form è meglio usare type="email" e un controllo lato server.
Estrarre tutti i numeri da una frase
Pattern
\d+
Testo
Lesson 12 has 3 tasks and 2 quizzes.
Con il flag g trova ogni sequenza di cifre: 12, 3, 2. \d+ è l'equivalente regex di "una o più cifre".
Estrarre un id da un URL con un gruppo di cattura
Pattern
/users/(\d+)
Testo
/users/42/profile
La corrispondenza completa è /users/42 e il gruppo di cattura (\d+) estrae solo 42. I gruppi di cattura sono il modo in cui *usi* davvero una corrispondenza regex nel codice.
Quantificatori greedy e lazy a confronto
Greedy
<.+>
Lazy
<.+?>
Testo
<b>hello</b>
La versione greedy trova l'intera stringa <b>hello</b> perché .+ prende tutto quello che può. La versione lazy (+?) si ferma al primo >, quindi trova solo <b> e </b>.
Errori comuni con le regex
Dimenticare l'escape dei caratteri speciali: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Quando li vuoi in senso letterale, mettici davanti \.
Scrivere un pattern che funziona su un esempio ma fallisce su input reali con spazi in più, ritorni a capo o campi mancanti.
Usare .* in modo greedy e trovare molto più del previsto: passa a .*? o a una classe di caratteri più specifica.
Cercare di analizzare con le regex formati annidati in profondità (HTML completo, linguaggi di programmazione complessi, parentesi bilanciate). Usa un vero parser.
Dimenticare il flag g e chiedersi perché viene evidenziata solo la prima corrispondenza.
Domande frequenti sulle regex
Cos'è una regex?
Regex è l'abbreviazione di *regular expression* (espressione regolare): un linguaggio compatto di pattern per trovare testo. La stessa idea esiste in quasi tutti i linguaggi di programmazione e in molti editor e strumenti da riga di comando.
Come si scrive una regex?
Parti dai caratteri letterali che vuoi trovare, poi sostituisci le parti variabili con classi di caratteri (\d, \w, [abc]) e quantificatori (*, +, ?, {n,m}). Usa un regex tester per iterare finché il pattern trova esattamente i casi che ti interessano.
Cosa significa \w nelle regex?
\w trova un carattere di parola: una lettera, una cifra o un trattino basso. \W è il contrario (qualsiasi carattere che non sia di parola). L'insieme esatto dipende dal motore e dal flag Unicode.
Perché la mia regex trova troppo testo?
I quantificatori sono greedy per impostazione predefinita: .* prende il più possibile. Passa a un quantificatore lazy (.*?) o usa una classe di caratteri più specifica per fermarti dove vuoi.
Le regex di JavaScript sono uguali a quelle degli altri linguaggi?
Le basi sono le stesse, ma i motori cambiano. JavaScript, PCRE, re di Python, Java, Go e .NET supportano flag e funzioni avanzate leggermente diversi (supporto al lookbehind, gruppi con nome, quantificatori possessivi).
Chi inizia a programmare dovrebbe imparare le regex?
Sì, un passo alla volta. Inizia da caratteri letterali, classi di caratteri, quantificatori, ancore, flag e gruppi di cattura. Lascia per dopo lookaround, gruppi con nome e regex condizionali.