Validatori Formato
Panoramica
I validatori formato coprono i tipi di dato più comuni nei form applicativi: indirizzi email e URL, numeri di telefono (multi-paese), colori in vari formati, versioni software, tipi MIME, coordinate geografiche, Partita IVA europea e validazioni semantiche (nomi, username, tag).
Validatori
email
Sintassi: email
Descrizione: Verifica che il valore sia un indirizzo email nel formato utente@dominio.tld.
Esempi:
// Valido
ValidationService.validate('user@example.com', 'email')
ValidationService.validate('mario.rossi@azienda.it', 'email')
// Non valido
ValidationService.validate('invalid-email', 'email')
ValidationService.validate('user@', 'email')
ValidationService.validate('@domain.com', 'email')
// In schema DynamicFormLayouts
{ name: 'email', type: 'email', validation: 'required|email|max:255' }
url
Sintassi: url
Descrizione: Verifica che il valore sia un URL valido parsabile dal costruttore URL del browser/Node. Richiede protocollo (es. https://).
Esempi:
// Valido
ValidationService.validate('https://example.com', 'url')
ValidationService.validate('http://localhost:3000/path', 'url')
ValidationService.validate('ftp://files.example.com', 'url')
// Non valido
ValidationService.validate('example.com', 'url') // manca protocollo
ValidationService.validate('not a url', 'url')
// In schema DynamicFormLayouts
{ name: 'websiteurl', type: 'url', validation: 'url' }
phone
Sintassi: phone oppure phone:paese
Descrizione: Verifica che il valore sia un numero di telefono valido. Senza parametro usa una validazione generica (8-15 cifre). Con il codice paese, applica le regole specifiche.
Parametro: (opzionale) codice paese: it, de, fr, es, gb, ru
| Paese | Formato | Esempio |
|---|---|---|
it | Prefisso +39 o 0 + numero | +39 02 1234567 |
de | Prefisso +49 o 0 + numero | +49 30 12345678 |
fr | Prefisso +33 o 0 + numero | +33 1 23456789 |
es | Prefisso +34 + numero | +34 912345678 |
gb | Prefisso +44 o 0 + numero | +44 20 12345678 |
ru | Prefisso +7 o 8 + numero | +7 495 1234567 |
Esempi:
// Generico
ValidationService.validate('+39021234567', 'phone')
ValidationService.validate('3471234567', 'phone')
// Specifico per paese
ValidationService.validate('+39021234567', 'phone:it') // italiano
ValidationService.validate('03012345678', 'phone:de') // tedesco
// In schema DynamicFormLayouts
{ name: 'telefono', type: 'tel', validation: 'required|phone:it' }
color
Sintassi: color oppure color:formato
Descrizione: Verifica che il valore sia un colore valido. Senza parametro accetta HEX (#RGB o #RRGGBB), RGB e RGBA. Con parametro, valida solo il formato specifico.
Parametro: (opzionale) hex, rgb, rgba
Esempi:
// Accetta tutti i formati
ValidationService.validate('#FF5500', 'color')
ValidationService.validate('rgb(255, 85, 0)', 'color')
ValidationService.validate('rgba(255, 85, 0, 0.5)', 'color')
// Formato specifico
ValidationService.validate('#FF5500', 'color:hex') // valido
ValidationService.validate('rgb(255, 0, 0)', 'color:hex') // non valido
ValidationService.validate('rgb(255, 0, 0)', 'color:rgb') // valido
ValidationService.validate('rgba(0,0,0,0.5)', 'color:rgba') // valido
// In schema DynamicFormLayouts
{ name: 'coloretema', type: 'text', validation: 'required|color:hex' }
hexcolor
Sintassi: hexcolor oppure hexcolor:formato
Descrizione: Validatore dedicato ai colori esadecimali. Richiede il prefisso #. Con parametro specifica il formato esatto.
Parametro: (opzionale) short (#RGB), long (#RRGGBB), alpha (#RRGGBBAA)
Esempi:
// Accetta tutti i formati HEX
ValidationService.validate('#F50', 'hexcolor')
ValidationService.validate('#FF5500', 'hexcolor')
ValidationService.validate('#FF5500FF', 'hexcolor')
// Formato specifico
ValidationService.validate('#F50', 'hexcolor:short') // valido (#RGB)
ValidationService.validate('#FF5500', 'hexcolor:long') // valido (#RRGGBB)
ValidationService.validate('#FF5500AA', 'hexcolor:alpha') // valido (#RRGGBBAA)
// In schema DynamicFormLayouts
{ name: 'coloreprimario', type: 'text', validation: 'required|hexcolor:long' }
semver
Sintassi: semver
Descrizione: Verifica che il valore sia una versione semantica valida secondo le specifiche semver.org. Supporta pre-release e build metadata.
Formato: MAJOR.MINOR.PATCH[-prerelease][+build]
Esempi:
// Valido
ValidationService.validate('1.0.0', 'semver')
ValidationService.validate('1.2.3-alpha.1', 'semver')
ValidationService.validate('1.0.0+build.1', 'semver')
ValidationService.validate('2.0.0-rc.1+build.123', 'semver')
// Non valido
ValidationService.validate('1.0', 'semver') // manca PATCH
ValidationService.validate('v1.0.0', 'semver') // prefisso v non ammesso
ValidationService.validate('1.0.0.0', 'semver') // quattro componenti
// In schema DynamicFormLayouts
{ name: 'versione', type: 'text', validation: 'required|semver' }
version
Sintassi: version oppure version:formato
Descrizione: Verifica una versione software. Senza parametro accetta sia formato semver che semplice. Con parametro, valida solo il formato specificato.
Parametro: (opzionale) semver oppure simple
Esempi:
// Accetta entrambi i formati
ValidationService.validate('1.0.0', 'version') // semplice: valido
ValidationService.validate('1.2.3-rc.1', 'version') // semver: valido
// Formato specifico
ValidationService.validate('1.0.0', 'version:simple') // valido (MAJOR.MINOR o .PATCH)
ValidationService.validate('1.2', 'version:simple') // valido
ValidationService.validate('1.2.3-rc', 'version:semver') // valido
// In schema DynamicFormLayouts
{ name: 'versioneapi', type: 'text', validation: 'required|version:semver' }
mime
Sintassi: mime oppure mime:tipo1,tipo2
Descrizione: Verifica che il valore sia un tipo MIME valido (formato categoria/sottotipo). Con parametro, verifica che sia uno dei tipi specificati.
Parametro: (opzionale) lista di MIME type ammessi separati da virgola
Esempi:
// Formato MIME generico
ValidationService.validate('image/jpeg', 'mime')
ValidationService.validate('application/pdf', 'mime')
ValidationService.validate('text/plain', 'mime')
// Lista ristretta
ValidationService.validate('image/jpeg', 'mime:image/jpeg,image/png,image/gif') // valido
ValidationService.validate('application/exe', 'mime:image/jpeg,image/png') // non valido
// In schema DynamicFormLayouts
{ name: 'tipomime', type: 'text', validation: 'required|mime:application/pdf,application/msword' }
geolocation
Sintassi: geolocation
Descrizione: Verifica che il valore sia una coppia di coordinate geografiche nel formato latitudine,longitudine. Latitudine: -90 a +90. Longitudine: -180 a +180.
Esempi:
// Valido
ValidationService.validate('45.4642,9.1900', 'geolocation') // Milano
ValidationService.validate('41.9028,12.4964', 'geolocation') // Roma
ValidationService.validate('-33.8688,151.2093', 'geolocation') // Sydney
// Non valido
ValidationService.validate('91,0', 'geolocation') // latitudine fuori range
ValidationService.validate('0,181', 'geolocation') // longitudine fuori range
ValidationService.validate('45.46', 'geolocation') // manca longitudine
// In schema DynamicFormLayouts
{ name: 'coordinate', type: 'text', validation: 'required|geolocation' }
vatnumber
Sintassi: vatnumber oppure vatnumber:paese
Descrizione: Verifica la validità di una Partita IVA europea. Con il codice paese, applica la validazione specifica. Senza paese, tenta tutti i formati noti.
Parametro: (opzionale) codice paese ISO: IT, DE, FR, ES, GB
| Paese | Formato | Esempio |
|---|---|---|
IT | IT + 11 cifre | IT12345678901 |
DE | DE + 9 cifre | DE123456789 |
FR | FR + 2 car. + 9 cifre | FRXX123456789 |
ES | ES + carattere + 7 cifre + carattere | ESX1234567X |
GB | GB + 9/12 cifre | GB123456789 |
Esempi:
// Con paese specifico
ValidationService.validate('IT12345678901', 'vatnumber:IT')
ValidationService.validate('DE123456789', 'vatnumber:DE')
// Senza paese (prova tutti)
ValidationService.validate('IT12345678901', 'vatnumber')
// In schema DynamicFormLayouts
{ name: 'partitaiva', type: 'text', validation: 'required|vatnumber:IT' }
timestring
Sintassi: timestring oppure timestring:formato
Descrizione: Verifica che il valore sia un orario in formato stringa. Funzionalmente simile a time della categoria date, ma categorizzato come validatore di formato.
Parametro: (opzionale) 24h oppure 12h
Esempi:
// Formato libero
ValidationService.validate('14:30', 'timestring') // valido
ValidationService.validate('2:30 PM', 'timestring') // valido
// Formato specifico
ValidationService.validate('14:30', 'timestring:24h') // valido
ValidationService.validate('2:30 PM', 'timestring:12h') // valido
// In schema DynamicFormLayouts
{ name: 'orario', type: 'text', validation: 'required|timestring:24h' }
language
Sintassi: language oppure language:formato
Descrizione: Verifica che il valore sia un codice lingua valido. Supporta ISO 639-1 (2 lettere), ISO 639-2 (3 lettere) e locale (es. it-IT).
Parametro: (opzionale) iso639-1, iso639-2, locale
Esempi:
// Formato libero (accetta tutti)
ValidationService.validate('it', 'language') // ISO 639-1
ValidationService.validate('ita', 'language') // ISO 639-2
ValidationService.validate('it-IT', 'language') // locale
// Formato specifico
ValidationService.validate('it', 'language:iso639-1') // valido
ValidationService.validate('ita', 'language:iso639-2') // valido
ValidationService.validate('it-IT', 'language:locale') // valido
// In schema DynamicFormLayouts
{ name: 'lingua', type: 'text', validation: 'required|language:iso639-1' }
currency
Sintassi: currency oppure currency:formato
Descrizione: Verifica che il valore sia un codice valuta valido. Supporta codici ISO 4217 (3 lettere maiuscole) e simboli valuta ($, €, £, ecc.).
Parametro: (opzionale) iso4217 oppure symbol
Esempi:
// ISO 4217
ValidationService.validate('EUR', 'currency')
ValidationService.validate('USD', 'currency:iso4217')
ValidationService.validate('GBP', 'currency:iso4217')
// Simbolo
ValidationService.validate('€', 'currency:symbol')
ValidationService.validate('$', 'currency:symbol')
// In schema DynamicFormLayouts
{ name: 'valuta', type: 'text', validation: 'required|currency:iso4217' }
semantic
Sintassi: semantic:tipo
Descrizione: Applica validazione semantica per tipi di dato specifici. Il parametro è obbligatorio per specificare il tipo.
Parametro: name, username, tag, slug, title
| Tipo | Regola |
|---|---|
name | Inizia con maiuscola, più parole separate da spazio/trattino |
username | 4-20 caratteri, inizia con lettera/numero, ammette ., _, - |
tag | Minuscolo, numeri e trattini (formato slug) |
slug | Identico a tag |
title | Inizia con maiuscola, ammette caratteri comuni in titoli |
Esempi:
// Nome proprio
ValidationService.validate('Mario Rossi', 'semantic:name') // valido
ValidationService.validate('mario rossi', 'semantic:name') // non valido
// Username
ValidationService.validate('mario_rossi', 'semantic:username') // valido
ValidationService.validate('mr', 'semantic:username') // non valido: troppo corto
// Tag
ValidationService.validate('vue-form', 'semantic:tag') // valido
ValidationService.validate('Vue Form', 'semantic:tag') // non valido
// Titolo
ValidationService.validate('Guida Completa', 'semantic:title') // valido
// In schema DynamicFormLayouts
{ name: 'nomeautore', type: 'text', validation: 'required|semantic:name' }