Validators

Validatori Finanziari

Validatori per dati bancari e finanziari - IBAN, carte di credito, SWIFT/BIC, mandati SEPA e CVV.

Panoramica

I validatori finanziari coprono i principali identificatori e codici utilizzati nel settore bancario e dei pagamenti: IBAN internazionale (con verifica modulo 97), numeri di carta di credito (algoritmo di Luhn), codici SWIFT/BIC, mandati SEPA e codici di sicurezza CVV.

Validatori

iban

Sintassi: iban
Descrizione: Verifica la validità di un codice IBAN internazionale. Controlla il formato (2 lettere paese + 2 cifre controllo + BBAN), la lunghezza (15-34 caratteri) e il checksum tramite algoritmo modulo 97.

Gli spazi vengono rimossi automaticamente. Il codice viene convertito in maiuscolo.

Esempi:

// Valido
ValidationService.validate('IT60X0542811101000000123456', 'iban')  // italiano
ValidationService.validate('DE89370400440532013000', 'iban')       // tedesco
ValidationService.validate('GB29NWBK60161331926819', 'iban')       // britannico

// Con spazi (vengono rimossi)
ValidationService.validate('IT60 X054 2811 1010 0000 0123 456', 'iban')

// Non valido
ValidationService.validate('IT00X0000000000000000000000', 'iban')  // checksum errato
ValidationService.validate('INVALID', 'iban')

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

creditcard

Sintassi: creditcard
Descrizione: Verifica la validità di un numero di carta di credito usando l'algoritmo di Luhn. Supporta carte da 13 a 19 cifre. Spazi e trattini vengono rimossi automaticamente.

Esempi:

// Numeri di test Visa/Mastercard (non usare in produzione)
ValidationService.validate('4111111111111111', 'creditcard')  // Visa test
ValidationService.validate('5500005555555559', 'creditcard')  // Mastercard test

// Con formattazione (spazi/trattini rimossi)
ValidationService.validate('4111-1111-1111-1111', 'creditcard')
ValidationService.validate('4111 1111 1111 1111', 'creditcard')

// Non valido
ValidationService.validate('1234567890123456', 'creditcard')  // Luhn fallisce
ValidationService.validate('123', 'creditcard')               // troppo corta

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

creditcardexpiry

Sintassi: creditcardexpiry
Descrizione: Verifica la data di scadenza di una carta di credito. Accetta il formato MM/YY o MM/YYYY. Verifica che la data non sia passata.

Esempi:

// Formato MM/YY
ValidationService.validate('12/25', 'creditcardexpiry')  // valido (dicembre 2025)
ValidationService.validate('01/20', 'creditcardexpiry')  // non valido (scaduta)

// Formato MM/YYYY
ValidationService.validate('12/2025', 'creditcardexpiry')  // valido
ValidationService.validate('12/2020', 'creditcardexpiry')  // non valido (scaduta)

// Mese non valido
ValidationService.validate('13/25', 'creditcardexpiry')   // non valido: mese 13

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

cvv

Sintassi: cvv
Descrizione: Verifica il codice di sicurezza CVV/CVC della carta. Accetta 3 cifre (Visa, Mastercard) o 4 cifre (American Express).

Esempi:

// CVV standard (3 cifre)
ValidationService.validate('123', 'cvv')   // valido
ValidationService.validate('999', 'cvv')   // valido

// CVV AMEX (4 cifre)
ValidationService.validate('1234', 'cvv')  // valido

// Non valido
ValidationService.validate('12', 'cvv')    // troppo corto
ValidationService.validate('12345', 'cvv') // troppo lungo
ValidationService.validate('abc', 'cvv')   // non numerico

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

swift

Sintassi: swift
Descrizione: Verifica la validità di un codice SWIFT bancario. Formato: BBBBCCLL (8 caratteri) o BBBBCCLLBBB (11 caratteri), dove BBBB=banca, CC=paese, LL=location, BBB=filiale.

Il codice viene convertito in maiuscolo automaticamente.

Esempi:

// SWIFT 8 caratteri
ValidationService.validate('UNCRITM1', 'swift')    // Unicredit IT Milano
ValidationService.validate('BNLIITRR', 'swift')    // BNL IT Roma

// SWIFT 11 caratteri (con codice filiale)
ValidationService.validate('UNCRITM1XXX', 'swift') // filiale principale

// Non valido
ValidationService.validate('ABCDE', 'swift')       // troppo corto
ValidationService.validate('UNCRITM1XXXX', 'swift') // troppo lungo

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

bic

Sintassi: bic
Descrizione: Alias di swift. Verifica il codice BIC (Bank Identifier Code) con lo stesso algoritmo e formato. Usare bic o swift in base alla nomenclatura preferita nel contesto.

Esempi:

// Equivalente a swift
ValidationService.validate('UNCRITM1XXX', 'bic')   // valido
ValidationService.validate('BNLIITRR', 'bic')      // valido

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

sepamandate

Sintassi: sepamandate
Descrizione: Verifica la validità di un riferimento univoco di mandato SEPA (Unique Mandate Reference). Massimo 35 caratteri. Sono ammessi: lettere (A-Z, a-z), numeri (0-9) e i caratteri speciali /, -, ?, :, (, ), ., ,, ', +. Il valore deve contenere almeno un carattere alfanumerico.

Esempi:

// Valido
ValidationService.validate('MANDATE-2024-001', 'sepamandate')
ValidationService.validate('IT/2024/001', 'sepamandate')
ValidationService.validate('REF12345', 'sepamandate')

// Non valido
ValidationService.validate('', 'sepamandate')                             // vuoto
ValidationService.validate('MANDATE_2024_001', 'sepamandate')             // underscore non ammesso
ValidationService.validate('MANDATE2024001TOOOOOOOOOOOOLONGREFERENCE', 'sepamandate')  // > 35 caratteri
ValidationService.validate('----', 'sepamandate')                         // solo caratteri speciali

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

Combinazione tipica per form pagamento

[
  { name: 'numerocarta', type: 'text', validation: 'required|creditcard' },
  { name: 'scadenza', type: 'text', validation: 'required|creditcardexpiry' },
  { name: 'cvv', type: 'text', validation: 'required|cvv' }
]