Validators

Validatori Formato

Validatori per formati comuni - email, URL, telefono, colori, versioni, MIME, geolocalizzazione, Partita IVA, valuta e semantica.

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

PaeseFormatoEsempio
itPrefisso +39 o 0 + numero+39 02 1234567
dePrefisso +49 o 0 + numero+49 30 12345678
frPrefisso +33 o 0 + numero+33 1 23456789
esPrefisso +34 + numero+34 912345678
gbPrefisso +44 o 0 + numero+44 20 12345678
ruPrefisso +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

PaeseFormatoEsempio
ITIT + 11 cifreIT12345678901
DEDE + 9 cifreDE123456789
FRFR + 2 car. + 9 cifreFRXX123456789
ESES + carattere + 7 cifre + carattereESX1234567X
GBGB + 9/12 cifreGB123456789

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

TipoRegola
nameInizia con maiuscola, più parole separate da spazio/trattino
username4-20 caratteri, inizia con lettera/numero, ammette ., _, -
tagMinuscolo, numeri e trattini (formato slug)
slugIdentico a tag
titleInizia 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' }