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.
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-validationDatuen data: 2026-10-03
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.
Sortutako zenbakiak asmatuak dira, eta probetarako bakarrik balio dute: baliteke kasualitatez benetako pertsona edo enpresa batenarekin bat etortzea.
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.
import { isValidNif } from "nif-dni-nie-cif-validation";
isValidNif("12345678Z"); // trueisValidNif(" 12.345.678-z "); // true: zuriuneak, puntuak eta marrak kentzen dira, eta minuskulak maiuskula bihurtzen diraisValidNif("B12345675"); // false: kontrol-digitua ez da zuzenaisValidNif(null); // false: ez du inoiz salbuespenik jaurtitzenimport { 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 hauimport { 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 onartzenimport * 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 onartzenimport { 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 onartzenimport { createGenerator, generateCif, generateDni, generateNie } from "nif-dni-nie-cif-validation/generate";
generateDni({ seed: 1 }); // "62707394X": berbera exekuzio eta plataforma guztietangenerateNie({ 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 bakoitzeangen.nif(); // "Y8524657C"gen.nif(); // "X5265925Y"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# 44829056Dnpx-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).
| Liburutegia | NAN, M ops/s | Tamaina, edozein mota |
|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | 929 B | |
| @maistik/validate-nif 2.0.1 | 456 B | |
| dni-js 1.0.0 | 882 B | |
| nif-dni-nie-cif-validation 1.0.11 | 1.517 B | |
| better-dni 4.4.2 | 1.134 B | |
| spain-id 1.1.14 | 583 B | |
| validator.js isIdentityCard(x, "ES") 13.15.35 | 2.539 B | |
| validator.js isTaxID(x, "es-ES") 13.15.35 | 6.537 B | |
| @kreyo/nif-validator 0.1.0 | 533 B | |
| jsvat (Spain) 2.5.4 | 1.186 B | |
| stdnum 1.12.6 | 51.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.