.*regexGenerator Apri il configuratore
GUIDA COMPLETA · 20 MIN DI LETTURA

Le regex, spiegate
senza misteri.

Una guida pratica per capire cosa sono le espressioni regolari, come si leggono e come trasformarle in uno strumento quotidiano.

01 — LE BASI

Cosa sono le espressioni regolari?

Una regular expression, abbreviata in regex, è un piccolo linguaggio per descrivere uno schema all’interno di un testo. Non dice quale parola cercare, ma quali caratteristiche deve avere ciò che stai cercando.

Una ricerca normale trova la parola ordine. Una regex può trovare tutti i codici ordine composti da tre lettere, un trattino e quattro cifre, anche se non conosci in anticipo il loro valore.

ESEMPIO
/\b[A-Z]{3}-\d{4}\b/g

TestoOrdini: WEB-2048 e APP-7310

RisultatoWEB-2048 · APP-7310

Pensa a una regex come a uno stampino.

Il testo cambia, ma tutto ciò che rispetta la forma dello stampino viene riconosciuto.

02 — COME SI LEGGE

L’anatomia di una regex

Prendiamo un codice prodotto: deve iniziare con due lettere maiuscole, continuare con quattro cifre e terminare lì.

^inizio
[A-Z]maiuscola
{2}2 volte
\dcifra
{4}4 volte
$fine

Letta ad alta voce diventa: “dall’inizio alla fine, trova esattamente due maiuscole seguite da quattro cifre”. Il segreto è smontare sempre una regex in piccoli blocchi.

03 — LA SINTASSI

I mattoni fondamentali

I metacaratteri sono simboli con un significato speciale. Bastano questi pochi elementi per risolvere una grande parte dei casi reali.

SimboloSignificatoEsempioTrova
.Qualsiasi caratterec.tcat, cot, cut
\dUna cifra da 0 a 9\d{2}07, 42
\wLettera, cifra o underscore\w+utente_01
\sUno spazio o separatoreciao\smondociao mondo
[abc]Uno dei caratteri indicati[aeiou]una vocale
[^abc]Un carattere escluso[^0-9]non una cifra
^ / $Inizio / fine del testo^OK$solo OK
|Alternativa logicagatto|canegatto o cane

Se cerchi un carattere che ha già un significato speciale, devi “escaparlo” con una barra inversa. Per esempio \. cerca un punto vero, mentre . indica qualsiasi carattere.

04 — QUANTE VOLTE?

I quantificatori

I quantificatori specificano quante volte il blocco precedente può comparire. È qui che una ricerca rigida diventa flessibile.

*Zero o più

Il blocco è facoltativo e può ripetersi.

+Una o più

Deve esserci almeno una occorrenza.

?Zero o una

Rende facoltativo un singolo blocco.

{n,m}Da n a m

Definisce un intervallo preciso.

ESEMPIO
/\+?39\s?\d{9,10}/g

TestoChiamami al +39 3471234567

Risultato+39 3471234567

05 — STRUTTURE COMPLESSE

Gruppi, alternative e riferimenti

Le parentesi () raggruppano più elementi come se fossero un solo blocco. Servono per applicare un quantificatore, scegliere tra alternative o catturare una parte del risultato.

  • (rosso|verde|blu)accetta uno dei tre colori;
  • (ab)+trova ab, abab, ababab e così via;
  • (?:https?://)?gruppo non catturante e facoltativo;
  • (\w+)@([\w.-]+)cattura separatamente nome e dominio.
Le regex cambiano leggermente tra linguaggi.

JavaScript, Python, PHP e Java condividono le basi, ma possono differire per flag, delimitatori e funzioni avanzate.

06 — SPAZI E MODALITÀ

Spazi bianchi, righe e flag regex

Uno spazio non è sempre un semplice spazio. Nei dati reali puoi incontrare tabulazioni, ritorni a capo e sequenze di separatori invisibili. Le classi dedicate rendono il pattern più robusto senza obbligarti a inserire quei caratteri a mano.

  • \sun carattere di spazio bianco: spazio, tab o nuova riga;
  • \tuna tabulazione orizzontale;
  • \r?\nun’interruzione di riga compatibile con file Windows e Unix;
  • \Squalsiasi carattere che non sia uno spazio bianco.

I flag cambiano invece il modo in cui il motore interpreta l’intera espressione. Non fanno parte del pattern: in JavaScript compaiono dopo il delimitatore finale, come in /ordine/gi.

gRicerca globale

Continua dopo il primo risultato e restituisce tutte le corrispondenze.

iIgnora maiuscole

Considera equivalenti, per esempio, “Regex”, “regex” e “REGEX”.

mModalità multilinea

Fa agire ^ e $ sull’inizio e sulla fine di ogni riga.

sDot all

Permette al punto di includere anche i caratteri di nuova riga.

ESEMPIO
/^errore:.*$/gim

TestoErrore: timeout Info: nuovo tentativo ERRORE: rete

RisultatoErrore: timeout · ERRORE: rete

07 — OLTRE LE BASI

Regex greedy, lazy, lookaround e backreference

Per leggere pattern avanzati devi distinguere quanto testo viene consumato, ciò che viene soltanto controllato e ciò che viene ricordato. Questi costrutti sono potenti, ma il loro supporto varia tra motori regex.

  • .+quantificatore greedy: prende la porzione più lunga che consente il match;
  • .+?quantificatore lazy: si ferma alla porzione più corta possibile;
  • foo(?=bar)lookahead positivo: trova “foo” solo se è seguito da “bar”;
  • (?<=€)\d+lookbehind positivo: trova le cifre solo se sono precedute dal simbolo euro;
  • \b(\w+)\s+\1\bbackreference: individua due parole consecutive uguali.
Controlla sempre il motore regex di destinazione.

RE2, JavaScript, PCRE, Python e Java non implementano ogni costrutto allo stesso modo. Un lookbehind valido nel browser, per esempio, non è disponibile in RE2.

08 — TRASFORMARE IL TESTO

Cerca e sostituisci con i gruppi di cattura

Una regex non serve soltanto a trovare: i gruppi catturati possono essere riutilizzati nella stringa sostitutiva. È il metodo più rapido per riordinare date, normalizzare nomi, rinominare file o trasformare dati strutturati.

ESEMPIO
(\d{2})/(\d{2})/(\d{4}) → $3-$2-$1

Testo29/07/2026

Risultato2026-07-29

  • $1, $2…richiamano i gruppi numerati in JavaScript e in molti editor;
  • $&rappresenta l’intera corrispondenza in JavaScript;
  • \1, \2…sono comuni nelle sostituzioni di altri strumenti e linguaggi.

La sintassi della sostituzione non è universale: verifica sempre la documentazione dell’editor, del linguaggio o del comando che stai usando.

09 — NEL MONDO REALE

A cosa servono davvero?

Cercare

Trova email, codici, date o parole con una determinata forma in grandi quantità di testo.

Validare

Controlla che un input rispetti un formato. La validazione completa richiede spesso anche logica applicativa.

Sostituire

Riformatta numeri, ripulisce spazi, rinomina file o trasforma dati usando i gruppi catturati.

Estrarre

Separa informazioni strutturate da log, documenti, URL e risposte testuali.

Le trovi negli editor, nei terminali, nei fogli di calcolo, negli analytics e in quasi ogni linguaggio. Sono perfette per riconoscere una forma testuale; non sono invece la scelta giusta per interpretare strutture profondamente annidate come HTML complesso.

10 — SEO E ANALISI DATI

Regex per SEO, Search Console, GA4 e URL

In ambito SEO le espressioni regolari aiutano a segmentare migliaia di query e URL senza esportare e filtrare ogni riga a mano. Sono utili per separare traffico brand e non brand, raggruppare directory, isolare pagine prodotto e controllare famiglie di URL durante una migrazione.

^(chi-siamo|contatti)/?$Gruppi di URL

Seleziona più percorsi precisi con una sola espressione.

brand|prodottoQuery correlate

Include ricerche che contengono almeno uno dei termini indicati.

^/shop/[^/]+/$Pagine di categoria

Trova URL a un solo livello sotto la directory /shop/.

\.(pdf|docx?)$Tipi di file

Raggruppa download PDF, DOC e DOCX osservando la fine dell’URL.

Search Console e Google Analytics non si comportano allo stesso modo.

Search Console usa RE2, applica normalmente un match parziale e non distingue le maiuscole. Google Analytics usa anch’esso RE2, ma la corrispondenza regex predefinita è completa e sensibile alle maiuscole. Ancoraggi e metacaratteri vanno quindi scelti in base allo strumento.

Nei redirect e nelle regole di riscrittura, la regex descrive spesso solo una parte della direttiva. Flag come [R=301,L] o [NC] appartengono alla configurazione del server, non al linguaggio delle espressioni regolari. Prima di pubblicare una regola, verifica destinazione, query string, stato HTTP e assenza di catene o loop di redirect.

Per analizzare dati, parti dal filtro più semplice.

Usa “contiene” o una corrispondenza esatta quando bastano. Passa a una regex solo quando devi rappresentare alternative, varianti o strutture ripetute.

11 — ATTENZIONE

Gli errori più comuni

01

Essere troppo permissivi. .* può catturare molto più del previsto. Parti dal caso più specifico possibile.

02

Dimenticare i confini. Usa ^, $ o \b per evitare corrispondenze parziali.

03

Testare solo il caso ideale. Prova input validi, non validi, vuoti, lunghi e con caratteri inattesi.

04

Voler fare tutto con una regex. Un pattern leggibile più un controllo nel codice è spesso più sicuro di una regex enorme.

05

Usare ripetizioni annidate senza limiti. Pattern ambigui come (a+)+ possono provocare backtracking catastrofico in alcuni motori. Preferisci limiti espliciti e blocchi non ambigui.

Una corrispondenza non prova che il dato esista.

Una regex riconosce il formato di una data o email, ma non conferma che la data sia possibile o la casella attiva.

12 — DALL’IDEA AL PATTERN

Un metodo pratico in 5 passi

  1. 1
    Scrivi la regola in italiano

    Definisci con precisione cosa deve essere accettato e cosa no.

  2. 2
    Dividila in blocchi

    Inizio, caratteri consentiti, quantità, separatori e fine.

  3. 3
    Traduci un blocco alla volta

    Costruisci progressivamente, senza partire da una regex gigante.

  4. 4
    Testa esempi e controesempi

    Ogni regola dovrebbe avere casi che passano e casi che falliscono.

  5. 5
    Semplifica e documenta

    La regex migliore funziona e resta comprensibile anche tra sei mesi.

ORA TOCCA A TE

Costruisci la tua prima regex.

Scegli cosa vuoi riconoscere: il configuratore traduce le tue scelte in sintassi e ti mostra subito il risultato.