Primers passos
nif-dni-nie-cif-validation comprova identificadors fiscals espanyols (NIF, DNI, NIF K/L/M, NIE i CIF) segons les regles oficials, i us diu per què un número no és vàlid. No té dependències, inclou els seus propis tipus de TypeScript i funciona amb import i amb require a Node.js 20 o posterior, a tots els navegadors actuals, a Deno i a Bun.
Instal·lació
Secció titulada «Instal·lació»npm install nif-dni-nie-cif-validationpnpm add nif-dni-nie-cif-validationyarn add nif-dni-nie-cif-validationbun add nif-dni-nie-cif-validationdeno add npm:nif-dni-nie-cif-validationPer validar des d’un terminal o un script de shell, sense escriure codi, executeu npx nif-dni-nie-cif-validation validate 12345678Z: la guia Línia d’ordres té totes les ordres i opcions.
Comproveu un número
Secció titulada «Comproveu un número»Les funcions isValid… responen sí o no. Accepten qualsevol valor i mai no llancen excepcions, de manera que els podeu passar el que hagi escrit l’usuari:
import { isValidNif } from "nif-dni-nie-cif-validation";
isValidNif("12345678Z"); // true: un DNIisValidNif("X1234567L"); // true: un NIEisValidNif("B12345674"); // true: un CIFisValidNif(" 12.345.678-z "); // true: s'admeten espais, punts, guions i minúsculesisValidNif("12345678A"); // false: la lletra de control no és correctaisValidNif(null); // false: mai no llança excepcionsAmb CommonJS, require funciona igual:
const { isValidNif } = require("nif-dni-nie-cif-validation");
isValidNif("12345678Z"); // trueTrieu la funció adequada
Secció titulada «Trieu la funció adequada»isValidNif accepta tots els tipus. Si un camp només n’admet alguns, feu servir la funció més específica:
| El camp admet… | Feu servir |
|---|---|
| Qualsevol NIF: DNI, NIF K/L/M, NIE o CIF | isValidNif(value) |
| Només persones físiques: DNI, NIF K/L/M o NIE | isValidNaturalPersonNif(value) |
| Un DNI (o un NIF K/L/M) | isValidDni(value) |
| Un NIE | isValidNie(value) |
| Empreses i altres entitats (CIF) | isValidCif(value) |
Un NIF-IVA espanyol (ES + NIF, només el format) |
isValidSpanishVat(value) |
import { isValidCif, isValidNaturalPersonNif } from "nif-dni-nie-cif-validation";
isValidNaturalPersonNif("X1234567L"); // trueisValidNaturalPersonNif("B12345674"); // false: un CIF no és una persona físicaisValidCif("P2807900B"); // true: Ajuntament de MadridNo teniu clar quin document és cadascun? Consulteu DNI, NIE, NIF i CIF.
Descobriu per què i deseu la forma canònica
Secció titulada «Descobriu per què i deseu la forma canònica»validate() retorna el tipus, la forma canònica que heu de desar i, si el valor no és vàlid, un error amb un codi, la regla de SPEC.md que no es compleix, un missatge i el caràcter de control esperat:
import { validate } from "nif-dni-nie-cif-validation";
validate(" 12.345.678-z ");// { valid: true, type: "DNI", normalized: "12345678Z" }
validate("12345678A").error;// { code: "INVALID_CONTROL_CHARACTER", rule: "DNI-2", expected: "Z",// message: 'The control character is not correct: for this DNI it should be "Z".' }Deseu normalized, no el que va escriure l’usuari: és en majúscules, sense separadors, i és igual per a totes les maneres d’escriure el mateix document.
Mostreu el missatge en l’idioma de l’usuari
Secció titulada «Mostreu el missatge en l’idioma de l’usuari»Els missatges són en anglès per defecte. El castellà, el català, el basc i el gallec s’importen per separat, de manera que el vostre bundle només inclou els idiomes que feu servir:
import { validate } from "nif-dni-nie-cif-validation";import { es } from "nif-dni-nie-cif-validation/locales/es";
validate("12345678A", { locale: es }).error?.message;// "El carácter de control no es correcto: para este DNI debería ser «Z»."