ToolHub
View All Posts

Pattern Regex Essenziali che Ogni Sviluppatore Dovrebbe Conoscere

Le espressioni regolari (regex) sono uno degli strumenti più potenti nel kit di strumenti di uno sviluppatore. Ti permettono di cercare, validare e trasformare testo con pattern concisi che richiederebbero decine di righe di codice procedurale. Sebbene la sintassi delle regex possa sembrare criptica a prima vista, padroneggiare un insieme fondamentale di pattern copre la stragrande maggioranza dei casi d'uso reali. Questa guida illustra i pattern regex che utilizzerai ripetutamente, con spiegazioni dettagliate su come funziona ciascuno.

Ripasso delle Basi delle Regex

Prima di immergerci nei pattern specifici, ecco un rapido ripasso dei metacaratteri fondamentali che costituiscono la base di tutti i pattern regex:

MetacarattereSignificatoEsempio
.Qualsiasi carattere singoloa.c corrisponde a abc, a1c, a c
*Zero o più del carattere precedenteab*c corrisponde a ac, abc, abbc
+Uno o più del carattere precedenteab+c corrisponde a abc, abbc
?Zero o uno del carattere precedentecolou?r corrisponde a color, colour
^Inizio della stringa^Hello corrisponde a Hello all'inizio
$Fine della stringaworld$ corrisponde a world alla fine
[]Classe di caratteri[aeiou] corrisponde a qualsiasi vocale
()Gruppo di cattura(ab)+ corrisponde a ab, abab
|Alternanza (OR)cat|dog corrisponde a cat o dog
\dCifra [0-9]\d{3} corrisponde a 123
\wCarattere di parola [a-zA-Z0-9_]\w+ corrisponde a hello_123
\sCarattere di spazio biancoa\sb corrisponde a a b

1. Validazione Email

Pattern Email di Base

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Questo pattern convalida la struttura di base di un indirizzo email: uno o più caratteri consentiti prima della @, seguiti da un nome di dominio contenente almeno un punto e un dominio di primo livello di due o più lettere. Cattura la maggior parte dei formati non validi consentendo il passaggio degli indirizzi legittimi.

Corrispondenze: user@example.com, john.doe+tag@company.co.uk

Non corrispondenze: user@, @example.com, user@.com

Nota importante: nessuna regex può convalidare perfettamente tutti gli indirizzi email validi secondo RFC 5322. Usa questo pattern per un controllo di base del formato, poi verifica l'indirizzo inviando un'email di conferma. Per le applicazioni in produzione, combina la convalida regex con la verifica del dominio.

2. Validazione URL

Pattern URL HTTP/HTTPS

^https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$

Questo pattern corrisponde agli URL HTTP e HTTPS con un prefisso www opzionale, inclusi nome di dominio e percorso opzionale. La s? rende opzionale la "s" in https, (www\.)? rende opzionale il prefisso www. Il segmento del percorso (\/[^\s]*)? consente qualsiasi carattere non di spazio dopo il nome di dominio.

Corrispondenze: https://example.com, http://www.example.com/path/to/page

Non corrispondenze: ftp://example.com, example.com (nessun protocollo)

3. Validazione Numeri di Telefono

Numeri di Telefono Internazionali

^\+?[1-9]\d{1,14}$

Questo pattern segue il formato E.164 per i numeri di telefono internazionali. Consente un prefisso + opzionale, richiede che la prima cifra sia 1-9 (nessuno zero iniziale) e consente fino a 15 cifre totali. È il formato più affidabile per memorizzare e convalidare i numeri di telefono a livello internazionale.

Corrispondenze: +14155552671, 442071838750

Non corrispondenze: +01xxxxxxxxx, 123

4. Forza della Password

Pattern Password Forte

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Questo pattern applica una politica di password forte: almeno 8 caratteri, contenenti almeno una lettera minuscola, una maiuscola, una cifra e un carattere speciale. La sintassi (?=.*[...]) utilizza lookahead positivi per verificare la presenza di ogni tipo di carattere senza consumare caratteri.

Corrispondenze: MyP@ss1word, Str0ng!Pass

Non corrispondenze: password, Password1, P@ss

5. Validazione Indirizzo IP

Indirizzo IPv4

^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

Questo pattern convalida gli indirizzi IPv4 con un corretto controllo dell'intervallo. Ogni ottetto deve essere compreso tra 0 e 255. Il pattern utilizza alternanze per corrispondere: 250-255 (25[0-5]), 200-249 (2[0-4]\d) o 0-199 ([01]?\d\d?). Questo viene ripetuto tre volte dopo tre punti, poi una volta finale per l'ultimo ottetto.

Corrispondenze: 192.168.1.1, 10.0.0.1, 255.255.255.0

Non corrispondenze: 256.1.1.1, 192.168.1, 192.168.1.1.1

6. Validazione Formato Data

AAAA-MM-GG (ISO 8601)

^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$

Questo pattern convalida le date in formato ISO 8601 (AAAA-MM-GG). Verifica un anno di quattro cifre, un mese tra 01-12 e un giorno tra 01-31. Nota che questo pattern convalida il formato ma non la validità logica della data (ad esempio, consente 2026-02-31). Per una convalida completa, analizza la data e verifica a livello di codice.

Corrispondenze: 2026-05-20, 2025-01-01, 2024-12-31

Non corrispondenze: 2026-5-20, 2026-13-01, 26-05-20

7. Codici Colore Esadecimali

Colori Esadecimali CSS

^#(?:[0-9a-fA-F]{3}){1,2}$

Questo pattern corrisponde ai codici colore esadecimali CSS, inclusi sia la forma abbreviata a 3 cifre (#fff) che la forma completa a 6 cifre (#ffffff). Il quantificatore {1,2} consente 1 o 2 ripetizioni del gruppo di cifre esadecimali a 3 cifre, supportando entrambi i formati.

Corrispondenze: #fff, #FF5733, #1e293b

Non corrispondenze: fff, #ff, #1234567

8. Slug / Stringhe Sicure per URL

Pattern URL Slug

^[a-z0-9]+(?:-[a-z0-9]+)*$

Questo pattern convalida gli slug URL: stringhe alfanumeriche minuscole con trattini come separatori. Garantisce l'assenza di trattini iniziali o finali e nessun trattino consecutivo. Questo formato è SEO-friendly e sicuro per URL, nomi di file e identificatori.

Corrispondenze: my-blog-post, regex-patterns-guide, tool123

Non corrispondenze: My-Post, -slug, slug-, my--post

9. Numeri di Carta di Credito

Pattern Generico Carta di Credito

^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$

Questo pattern convalida i principali numeri di carta di credito: Visa (inizia con 4, 13 o 16 cifre), Mastercard (inizia con 51-55, 16 cifre), American Express (inizia con 34 o 37, 15 cifre) e Discover (inizia con 6011 o 65, 16 cifre). Combinalo con l'algoritmo di Luhn per una convalida completa.

10. Corrispondenza Tag HTML

Estrazione Tag HTML

<([a-z][a-z0-9]*)\b[^>]*>(.*?)<\/\1>

Questo pattern corrisponde ai tag HTML di apertura e chiusura con il loro contenuto. Il primo gruppo di cattura ([a-z][a-z0-9]*) cattura il nome del tag, e il riferimento all'indietro \1 garantisce che il tag di chiusura corrisponda a quello di apertura. (.*?) utilizza la corrispondenza pigra per catturare il contenuto tra i tag, ottenendo la corrispondenza più breve.

Consigli per Scrivere Regex Migliori

Vuoi testare interattivamente questi pattern regex? Prova il nostro strumento gratuito di test regex con corrispondenza in tempo reale, visualizzazione dei gruppi di cattura e spiegazione dei pattern.

Testa le Regex

Domande Frequenti

Cos'è un Pattern Regex?

Un pattern regex è una sequenza di caratteri che definisce un pattern di ricerca. Viene utilizzato per la corrispondenza di stringhe, la convalida, le operazioni di ricerca e sostituzione e l'analisi del testo. I pattern regex utilizzano metacaratteri speciali come ., *, +, ?, [], () e {} per definire regole di corrispondenza flessibili.

Dovrei Usare le Regex per Validare le Email?

Usa le regex per la convalida di base del formato email (controllo del simbolo @, struttura del dominio), ma non cercare di convalidare completamente gli indirizzi email solo con le regex. La specifica email (RFC 5322) è estremamente complessa e nessuna regex può convalidare perfettamente tutti gli indirizzi validi. In produzione, combina la convalida regex di base con la verifica effettiva dell'email (invio di un link di conferma).

Qual è la Differenza tra Quantificatori Golosi e Pigri?

I quantificatori golosi (*, +) corrispondono alla maggior quantità di testo possibile, mentre i quantificatori pigri (*?, +?) corrispondono alla minor quantità di testo possibile. Ad esempio, applicato a 'aabb', il pattern goloso a.*b corrisponde a 'aabb' (l'intera stringa), mentre il pattern pigro a.*?b corrisponde solo a 'aab' (la corrispondenza più breve).

Come Posso Testare i Pattern Regex?

Usa strumenti di test regex online (come il tester regex di ToolHub) per testare i pattern in modo interattivo. Questi strumenti evidenziano le corrispondenze in tempo reale, mostrano i gruppi di cattura e spiegano cosa fa ogni parte del pattern.

Le Regex Sono le Stesse tra Diversi Linguaggi di Programmazione?

La maggior parte della sintassi regex è condivisa tra i linguaggi, ma le funzionalità avanzate differiscono. JavaScript non supporta i lookbehind nei motori più vecchi, Python usa una sintassi dei gruppi nominati diversa da JavaScript, e PCRE (PHP) supporta più funzionalità della maggior parte degli altri motori. Testa sempre i pattern nel linguaggio di destinazione.