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:
| Metacarattere | Significato | Esempio |
|---|---|---|
| . | Qualsiasi carattere singolo | a.c corrisponde a abc, a1c, a c |
| * | Zero o più del carattere precedente | ab*c corrisponde a ac, abc, abbc |
| + | Uno o più del carattere precedente | ab+c corrisponde a abc, abbc |
| ? | Zero o uno del carattere precedente | colou?r corrisponde a color, colour |
| ^ | Inizio della stringa | ^Hello corrisponde a Hello all'inizio |
| $ | Fine della stringa | world$ 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 |
| \d | Cifra [0-9] | \d{3} corrisponde a 123 |
| \w | Carattere di parola [a-zA-Z0-9_] | \w+ corrisponde a hello_123 |
| \s | Carattere di spazio bianco | a\sb corrisponde a a b |
1. Validazione Email
Pattern Email di Base
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
2. Validazione URL
Pattern URL HTTP/HTTPS
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
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
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
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)
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
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
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
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
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
- Inizia in modo semplice: scrivi prima la versione più basilare del pattern, poi aggiungi complessità gradualmente. Testa a ogni passaggio.
- Usa le classi di caratteri: [a-z] è più chiaro di (a|b|c|...|z). Classi con nome come \d, \w e \s migliorano la leggibilità.
- Preferisci i quantificatori pigri: usa *? e +? invece di * e + quando hai bisogno della corrispondenza più breve, per evitare l'over-matching goloso.
- Usa le ancore: usa sempre ^ e $ per i pattern di convalida per garantire che l'intera stringa corrisponda, non solo una sottostringa.
- Evita il backtracking catastrofico: quantificatori annidati come (a+)+ possono causare una complessità temporale esponenziale su certi input. Usa gruppi atomici o quantificatori possessivi quando disponibili.
- Commenta i pattern complessi: usa il flag x (modalità verbose) per aggiungere spazi e commenti ai pattern complessi.
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 RegexDomande 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.