Validators

Validatori Italiani

Validatori per documenti e codici italiani - Codice Fiscale, Partita IVA e CAP.

Panoramica

I validatori italiani coprono i principali codici anagrafici e identificativi utilizzati in Italia: Codice Fiscale (con verifica dell'algoritmo di checksum ufficiale), Partita IVA (con algoritmo di Luhn modificato) e CAP (Codice di Avviamento Postale).

Tutti i validatori gestiscono automaticamente il case (maiuscolo/minuscolo) e la rimozione degli spazi.

Validatori

codicefiscale

Sintassi: codicefiscale
Descrizione: Verifica la validità del Codice Fiscale italiano. Controlla sia il formato (struttura alfanumerica di 16 caratteri) che il checksum tramite l'algoritmo ufficiale dell'Agenzia delle Entrate.

Formato atteso: 6 lettere (cognome) + 6 lettere/cifre (nome + anno + mese) + 4 caratteri (comune) + 1 lettera (controllo)

Esempi:

// Valido
ValidationService.validate('RSSMRA85M01H501Z', 'codicefiscale')

// Non valido - formato errato
ValidationService.validate('123456789012345X', 'codicefiscale')  // inizia con numeri
ValidationService.validate('RSSMRA85M01H501', 'codicefiscale')   // manca carattere controllo

// Non valido - checksum errato
ValidationService.validate('RSSMRA85M01H501A', 'codicefiscale')  // lettera controllo sbagliata

// In schema DynamicFormLayouts
{ name: 'codicefiscale', type: 'text', validation: 'required|codicefiscale' }

partitaiva

Sintassi: partitaiva
Descrizione: Verifica la validità della Partita IVA italiana. Controlla che sia composta da esattamente 11 cifre e che la cifra di controllo sia corretta tramite l'algoritmo di Luhn modificato.

Gli spazi vengono rimossi automaticamente prima della validazione.

Esempi:

// Valido (11 cifre con checksum corretto)
ValidationService.validate('12345678901', 'partitaiva')

// Con spazi (vengono rimossi)
ValidationService.validate('123 456 78901', 'partitaiva')

// Non valido - lunghezza errata
ValidationService.validate('1234567890', 'partitaiva')   // 10 cifre
ValidationService.validate('123456789012', 'partitaiva') // 12 cifre

// Non valido - contiene lettere
ValidationService.validate('1234567890A', 'partitaiva')

// In schema DynamicFormLayouts
{ name: 'partitaiva', type: 'text', validation: 'required|partitaiva' }

codicefiscaleorpartitaiva

Sintassi: codicefiscaleorpartitaiva
Descrizione: Accetta il valore se valido come Codice Fiscale oppure come Partita IVA. Utile per campi anagrafici che devono accettare entrambi i formati (es. soggetti fisici e giuridici).

La validazione tenta prima il Codice Fiscale, poi la Partita IVA. Restituisce errore solo se entrambe falliscono.

Esempi:

// Valido come Codice Fiscale
ValidationService.validate('RSSMRA85M01H501Z', 'codicefiscaleorpartitaiva')

// Valido come Partita IVA
ValidationService.validate('12345678901', 'codicefiscaleorpartitaiva')

// Non valido (né CF né P.IVA)
ValidationService.validate('12345', 'codicefiscaleorpartitaiva')
ValidationService.validate('ABCDEFGHILMN', 'codicefiscaleorpartitaiva')

// In schema DynamicFormLayouts
{ name: 'identificativo', type: 'text', validation: 'required|codicefiscaleorpartitaiva' }

cap

Sintassi: cap
Descrizione: Verifica che il valore sia un CAP (Codice di Avviamento Postale) italiano valido: esattamente 5 cifre numeriche.

Esempi:

// Valido
ValidationService.validate('00100', 'cap')  // Roma
ValidationService.validate('20121', 'cap')  // Milano
ValidationService.validate('40100', 'cap')  // Bologna

// Non valido
ValidationService.validate('0010', 'cap')    // 4 cifre
ValidationService.validate('001001', 'cap')  // 6 cifre
ValidationService.validate('0010A', 'cap')   // contiene lettera

// In schema DynamicFormLayouts
{ name: 'cap', type: 'text', validation: 'required|cap' }

Combinazioni tipiche per form anagrafici

// Anagrafica persona fisica
[
  { name: 'codicefiscale', type: 'text', validation: 'required|codicefiscale' },
  { name: 'cap', type: 'text', validation: 'required|cap' }
]

// Anagrafica azienda
[
  { name: 'partitaiva', type: 'text', validation: 'required|partitaiva' },
  { name: 'cap', type: 'text', validation: 'required|cap' }
]

// Campo universale (persona o azienda)
{ name: 'identificativo', type: 'text', validation: 'required|codicefiscaleorpartitaiva' }