Migrar desde validator.js
validator.js valida muchos tipos de cadenas, y tiene dos funciones para identificadores españoles: isIdentityCard(x, "ES") e isTaxID(x, "es-ES"). Si lo que necesitas son identificadores españoles, esta librería los comprueba de forma más completa y añade el CIF, la normalización y el motivo de cada error. También puedes mantener validator.js para todo lo demás y usar esta librería solo para los NIF. La comparación de esta página es con validator.js 13.15.35.
Equivalencia de funciones
Sección titulada «Equivalencia de funciones»| validator.js | nif-dni-nie-cif-validation | Notas |
|---|---|---|
isIdentityCard(x, "ES") |
isValidNaturalPersonNif(x) |
validator.js acepta un DNI o un NIE; esta también acepta los NIF K/L/M y la forma antigua del NIE |
isTaxID(x, "es-ES") |
isValidNaturalPersonNif(x) |
validator.js acepta un DNI, un NIF K/L/M o un NIE; esta también acepta la forma antigua del NIE |
| Sin validación de CIF | isValidCif(x), o isValidNif(x) para todos los tipos |
Antes y después
Sección titulada «Antes y después»Antes, con validator.js:
import validator from "validator";
validator.isIdentityCard("12345678Z", "ES"); // truevalidator.isIdentityCard("X1234567L", "ES"); // truevalidator.isTaxID("K1234567L", "es-ES"); // truevalidator.isTaxID("B12345674", "es-ES"); // false: no admite CIFDespués:
import { isValidCif, isValidNaturalPersonNif, isValidNif } from "nif-dni-nie-cif-validation";
isValidNaturalPersonNif("12345678Z"); // trueisValidNaturalPersonNif("X1234567L"); // trueisValidNaturalPersonNif("K1234567L"); // trueisValidCif("B12345674"); // trueisValidNif("B12345674"); // true: cualquier tipoCon una librería de formularios, los esquemas para Zod, Valibot y Yup sustituyen a un refine personalizado que llama a validator.js, y además dan el mensaje.
Diferencias de comportamiento
Sección titulada «Diferencias de comportamiento»Valores que no son cadenas. validator.js lanza un TypeError con cualquier cosa que no sea una cadena, como null o un número. Esta librería devuelve false, y validate() devuelve el código NOT_A_STRING (INPUT-1), así que puedes pasarle el valor de un formulario tal cual.
import validator from "validator";
validator.isIdentityCard(null, "ES"); // throws TypeErrorimport { isValidNaturalPersonNif, validate } from "nif-dni-nie-cif-validation";
isValidNaturalPersonNif(null); // falsevalidate(null).error?.code; // "NOT_A_STRING"Separadores. Las dos librerías aceptan minúsculas. validator.js rechaza espacios, puntos y guiones; esta librería los quita (NORM-2, NORM-3) y da la forma canónica que debes guardar.
La forma antigua del NIE. validator.js rechaza los NIE de 10 caracteres, como X01234567L; siguen siendo válidos (NIE-3).
NIF K/L/M. isIdentityCard(x, "ES") los rechaza, e isTaxID(x, "es-ES") los acepta. Esta librería los acepta como NIF de personas físicas (KLM-1).
import validator from "validator";
validator.isIdentityCard("12.345.678-Z", "ES"); // falsevalidator.isTaxID("X01234567L", "es-ES"); // falsevalidator.isIdentityCard("K1234567L", "ES"); // falseimport { isValidNaturalPersonNif, validate } from "nif-dni-nie-cif-validation";
isValidNaturalPersonNif("12.345.678-Z"); // truevalidate("12.345.678-Z").normalized; // "12345678Z"isValidNaturalPersonNif("X01234567L"); // trueisValidNaturalPersonNif("K1234567L"); // trueTamaño del bundle. Una función de validator.js incluye las reglas de todos los países que admite, así que isIdentityCard e isTaxID ocupan varias veces lo que isValidNif. La página de rendimiento tiene las cifras medidas.