Joan edukira
nif-dni-nie-cif-validation: Espainiako IFZ, NAN, AIZ eta IFK zenbakien egiaztapenanif-dni-nie-cif-validation: Espainiako IFZ, NAN, AIZ eta IFK zenbakien egiaztapena

Egiaztatu Espainiako IFZ, NAN, AIZ eta IFK zenbakiak

Zuzena, azkarra, txikia eta tipatua. Arau bakoitzak bere iturria aipatzen du SPEC.md fitxategian, eta errore bakoitzak zergatia azaltzen du.

Instalatu npm bidez
npm i nif-dni-nie-cif-validation yarn add nif-dni-nie-cif-validation pnpm add nif-dni-nie-cif-validation bun add nif-dni-nie-cif-validation

Probatu

Idatzi edo itsatsi IFZ, NAN, AIZ edo IFK bat. Liburutegiak berak egiaztatzen du idatzi ahala, eta zergatik ez den baliozkoa esaten dizu.

Zuriuneak, puntuak, marrak eta minuskulak erabil ditzakezu; adibidez, 12.345.678-z.

Emaitza hemen agertuko da, idatzi ahala.

Zuzeneko egiaztatzaileak JavaScript behar du. Orriaren gainerako guztiak hura gabe funtzionatzen du.

Osorik zure nabigatzailean exekutatzen da: daturik ez da nabigatzailetik ateratzen.

Zergatik liburutegi hau

  • Zuzena, iturriekin

    24 arau, bakoitza bere identifikatzailearekin (DNI-2, NIE-3, CIF-3…) eta SPEC.md fitxategian dokumentatutako iturriarekin: iturri ofizial bat (BOE, AEAT), hala identifikatutako konbentzio bat edo liburutegiaren kontratua. Errore bakoitzak zein arau ez den bete adierazten du.

  • Azkarra

    Probatutako beste edozein liburutegiren errendimenduaren 6,3 halakoa, gutxienez

    60,1 M ops/s NAN zenbakiekin (milioi egiaztapen segundoko; zenbat eta gehiago, orduan eta azkarragoa), eta v1-ekiko errendimendu-ratioa 7,0–8,9 da.

  • Txikia

    929 B min+gzip isValidNif funtzioarentzat, eta 4,7 kB liburutegi osoarentzat. Tree shaking onartzen du, eta hizkuntza bakoitza bere aldetik inportatzen da.

    Helburu bakarreko liburutegi batzuk txikiagoak dira egiaztatzaile bakar baterako (@maistik/validate-nif 456 B, @kreyo/nif-validator 533 B, spain-id 583 B eta dni-js 882 B). Horietako batzuek mota gutxiago egiaztatzen dituzte: liburutegi honek sarrera normalizatzeko, CIF-3 arauko kontrol motetarako eta K/L/M IFZetarako erabiltzen ditu byteak.

  • 0 mendekotasun

    Ez du exekuzio-garaiko mendekotasunik. Zod, Valibot eta Yup aukerako peer mendekotasunak dira, eta haien egokitzaileek bakarrik behar dituzte.

  • Tipatua

    TypeScript-en idatzia, import eta require erabiltzeko deklarazioekin. ES moduluak eta CommonJS, ES2016ra konpilatuta.

  • Ez du inoiz salbuespenik jaurtitzen

    Egiaztatzaileek unknown motako balioak onartzen dituzte: null, zenbaki edo objektu bat jasotzean, false itzultzen dute; validate() funtzioak, berriz, NOT_A_STRING errorea itzultzen du. Erabiltzailearen sarrerak ez du inoiz hutsik eragiten.

  • 5 hizkuntza

    Errore-mezuak eta erakunde moten izenak ingelesez, gaztelaniaz, katalanez, euskaraz eta galegoz. Goiko egiaztatzaileak orri honen hizkuntza erabiltzen du.

  • Sorgailuak eta eskemak

    Hazidun proba-datuen sorgailuak, eta balio normalizatua eta mezua zure hizkuntzan itzultzen dituzten Zod, Valibot eta Yup eskemak.

Neurketa: AMD EPYC 9V74 80-Core Processor, Node.js v24.21.0, 2026-10-02; liburutegi bakoitza bere aukera lehenetsiekin. Liburutegien arteko proportzioak zenbaki absolutuak baino hobeto mantentzen dira makina batetik bestera.

Erabili

Egiaztapen boolearrak bai edo ez jakiteko, validate() zergatia jakin behar duzunean, aukerako sarrera-puntuak eskemetarako eta proba-datuetarako, eta komando-lerro bat terminaletarako, scriptetarako eta AA agenteetarako.

Kode-adibideak
import { isValidNif } from "nif-dni-nie-cif-validation";
isValidNif("12345678Z"); // true
isValidNif(" 12.345.678-z "); // true: zuriuneak, puntuak eta marrak kentzen dira, eta minuskulak maiuskula bihurtzen dira
isValidNif("B12345675"); // false: kontrol-digitua ez da zuzena
isValidNif(null); // false: ez du inoiz salbuespenik jaurtitzen
import { validate } from "nif-dni-nie-cif-validation";
import { eu } from "nif-dni-nie-cif-validation/locales/eu";
validate(" b-1234567-4 ", { locale: eu });
// { valid: true, type: "CIF", normalized: "B12345674",
// meta: { orgKey: "B", orgDescription: "Erantzukizun mugatuko sozietatea" } }
validate("12345678A", { locale: eu }).error;
// { code: "INVALID_CONTROL_CHARACTER", rule: "DNI-2", expected: "Z",
// message: "Kontrol-karakterea ez da zuzena: NAN honetan «Z» izan beharko luke." }
validate(" 12.345.678-z ").normalized; // "12345678Z": gorde balio hau
import { z } from "zod";
import { eu } from "nif-dni-nie-cif-validation/locales/eu";
import { zNif } from "nif-dni-nie-cif-validation/zod";
const schema = z.object({ nif: zNif({ types: ["DNI", "NIE"], locale: eu }) });
schema.parse({ nif: " 12.345.678-z " }); // { nif: "12345678Z" }
schema.safeParse({ nif: "B12345674" }).success; // false: hemen ez da IFKrik onartzen
import * as v from "valibot";
import { eu } from "nif-dni-nie-cif-validation/locales/eu";
import { vNif } from "nif-dni-nie-cif-validation/valibot";
const schema = v.object({ nif: vNif({ types: ["DNI", "NIE"], locale: eu }) });
v.parse(schema, { nif: " 12.345.678-z " }); // { nif: "12345678Z" }
v.safeParse(schema, { nif: "B12345674" }).success; // false: hemen ez da IFKrik onartzen
import { object } from "yup";
import { eu } from "nif-dni-nie-cif-validation/locales/eu";
import { yNif } from "nif-dni-nie-cif-validation/yup";
const schema = object({ nif: yNif({ types: ["DNI", "NIE"], locale: eu }) });
schema.validateSync({ nif: " 12.345.678-z " }); // { nif: "12345678Z" }
schema.isValidSync({ nif: "B12345674" }); // false: hemen ez da IFKrik onartzen
import { createGenerator, generateCif, generateDni, generateNie } from "nif-dni-nie-cif-validation/generate";
generateDni({ seed: 1 }); // "62707394X": berbera exekuzio eta plataforma guztietan
generateNie({ seed: 1, prefix: "Z" }); // "Z6270739R"
generateCif({ seed: 1, orgKey: "B" }); // "B62707393"
generateDni({ seed: 1, format: true }); // "62707394-X"
const gen = createGenerator(42); // hazidun sekuentzia bat: balio desberdinak, berberak exekuzio bakoitzean
gen.nif(); // "Y8524657C"
gen.nif(); // "X5265925Y"
Terminal window
npx nif-dni-nie-cif-validation validate 12345678Z B12345674 12345678A --locale eu
# 12345678Z: valid DNI 12345678Z
# B12345674: valid CIF B12345674 (Erantzukizun mugatuko sozietatea)
# 12345678A: invalid [DNI-2 INVALID_CONTROL_CHARACTER] Kontrol-karakterea ez da zuzena: NAN honetan «Z» izan beharko luke.
npx nif-dni-nie-cif-validation generate dni --count 2 --seed 42
# 60110375J
# 44829056D

npx-ek paketea deskargatzen du lehen aldian. Script eta agenteentzako JSON irteera, irteera-kodeak, proba-datuak eta CSV fitxategien egiaztapena komando-lerroaren gidan daude.

Konparazioa

Errendimendua NAN multzoan, milioi egiaztapen segundoko (M ops/s; zenbat eta gehiago, orduan eta azkarragoa), eta edozein motatako egiaztatzaile baten tamaina (min+gzip; zenbat eta gutxiago, orduan eta txikiagoa).

npm-ko Espainiako identifikatzaileen liburutegien errendimendua eta tamaina
LiburutegiaNAN, M ops/sTamaina, edozein mota
nif-dni-nie-cif-validation konpilazio hau60,12929 B
@maistik/validate-nif 2.0.19,46456 B
dni-js 1.0.08,90882 B
nif-dni-nie-cif-validation 1.0.118,591.517 B
better-dni 4.4.28,441.134 B
spain-id 1.1.146,96583 B
validator.js isIdentityCard(x, "ES") 13.15.355,732.539 B
validator.js isTaxID(x, "es-ES") 13.15.354,226.537 B
@kreyo/nif-validator 0.1.02,78533 B
jsvat (Spain) 2.5.42,101.186 B
stdnum 1.12.60,4151.063 B

Zenbaki guztiak bench/results/latest.json fitxategitik datoz. Abiadura ez da dena: errendimenduaren orriak emaitza osoetarako esteka du, eta emaitza horiek SPEC.md fitxategiarekiko adostasuna eta ezaugarriak ere konparatzen dituzte.

Errendimendua eta konparazioa, osorik →