Validatori Finanziari
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' }
]