ecuador-validator
v2.1.0
Published
Validador de datos más usados en Ecuador
Maintainers
Readme
Comenzando
Instalación
Instala el paquete con npm:
npm install ecuador-validatorPuedes importar el validador en tu proyecto de la siguiente manera:
import * as validator from 'ecuador-validator';
// o importa solo lo que necesitas:
import { ci, ruc } from 'ecuador-validator';Este paquete es solo ESM a partir de la v2.0.0. require('ecuador-validator') (CommonJS) funciona en Node.js 20.19+ / 22.12+ gracias al require() nativo de módulos ES; en versiones anteriores de Node.js usa la v1.x.
Uso
El validador dispone de los siguientes métodos:
validator.ci(ci: string | number): boolean;
validator.ruc(ruc: string | number): boolean;
validator.cellphone(cellphone: string | number, type?: 'simple' | 'code'): boolean;
validator.telephone(telephone: string | number, type?: 'simple' | 'code' | 'international'): boolean;
validator.placaCar(placa: string, strict?: boolean): boolean;
validator.placaMoto(placa: string, strict?: boolean): boolean;Todos los métodos aceptan string (recomendado) y, salvo las placas, también number. Ojo: un number pierde los ceros iniciales (ci(0910985993) se convierte en '910985993'), así que usa siempre string para valores que empiezan con cero. Cualquier otro tipo de dato lanza un Error.
Cédula — ci()
Valida una cédula de identidad ecuatoriana: 10 dígitos, código de provincia válido (01–24, o 30 para registrados en el exterior), tercer dígito entre 0 y 5 (las personas naturales nunca usan 6–9) y dígito verificador módulo 10.
validator.ci('1710034065'); // true
validator.ci(1710034065); // true — acepta number si no empieza con cero
validator.ci('1790012346'); // false — tercer dígito 9 (es un prefijo de RUC jurídico, no una cédula)
validator.ci('1710034060'); // false — dígito verificador incorrecto
validator.ci('123'); // false — longitud inválidaRUC — ruc()
Valida el formato del RUC (13 dígitos), no su existencia en el registro del SRI:
- Estructura general: 13 dígitos, código de provincia válido (01–24, o 30).
- Tercer dígito 0–5 (persona natural): los primeros 10 dígitos deben ser una cédula válida (incluye el dígito verificador módulo 10) y el establecimiento (últimos 3 dígitos) no puede ser
000. - Tercer dígito 6 (entidad pública): validación estructural; el establecimiento (últimos 4 dígitos) no puede ser
0000. - Tercer dígito 9 (sociedad privada o extranjera): validación estructural; el establecimiento (últimos 3 dígitos) no puede ser
000. - Tercer dígito 7 u 8: inválido (ningún tipo de RUC los usa).
validator.ruc('1713175071001'); // true — persona natural, establecimiento 001
validator.ruc('1713175071010'); // true — establecimiento 010 (válido)
validator.ruc('0791840299001'); // true — sociedad (tercer dígito 9)
validator.ruc('1000000000001'); // false — la cédula no pasa el dígito verificador
validator.ruc('1713175071000'); // false — establecimiento 000
validator.ruc('1760012340000'); // false — entidad pública con establecimiento 0000¿Por qué no se aplica el algoritmo módulo 11? El SRI cambió la generación de RUC para sociedades y personas naturales extranjeras (oficio Nro. SRI-NAC-SGD-2020-0092-O del 6 de julio de 2020) y, mediante comunicado del 20 de octubre de 2021, aclaró que el dígito verificador módulo 11 ya no se aplica cuando el número secuencial supera los 6 dígitos, recomendando expresamente no aplicar la validación módulo 11 para no rechazar RUCs válidos. Además, no existe normativa que exija la validación algorítmica del RUC. Por eso este paquete valida la estructura y, en el caso de personas naturales, el dígito verificador de la cédula (que sí sigue vigente).
Celular — cellphone()
Valida números de celular ecuatorianos. Dos formatos según el segundo parámetro ('simple' por defecto):
'simple':09xxxxxxxx(10 dígitos).'code': con código de país,5939xxxxxxxxo+5939xxxxxxxx(12 dígitos sin el+).
validator.cellphone('0991234567'); // true — tipo 'simple' por defecto
validator.cellphone('099123456'); // false — longitud inválida
validator.cellphone('+593991234567', 'code'); // true
validator.cellphone('593991234567', 'code'); // true — el + es opcional
validator.cellphone('0991234567', 'code'); // false — formato 'simple' con tipo 'code'Teléfono — telephone()
Valida teléfonos fijos. Tres formatos según el segundo parámetro ('simple' por defecto):
'simple': 7 dígitos empezando con 2.'code': con código de área, 9 dígitos (022xxxxxx,032xxxxxx, …,072xxxxxx).'international': con código de país,59322xxxxxxo+59322xxxxxx(11 dígitos sin el+).
validator.telephone('2123456'); // true — tipo 'simple' por defecto
validator.telephone('022123456', 'code'); // true
validator.telephone('+59322123456', 'international'); // true
validator.telephone('59322123456', 'international'); // true — el + es opcional
validator.telephone('2123456', 'code'); // false — falta el código de áreaPlaca de vehículo — placaCar()
Valida placas de vehículos: 3 letras + 4 dígitos, sin guion. La primera letra debe corresponder a una provincia (no se usan D ni F). Acepta un segundo parámetro opcional strict (por defecto false). En modo normal no distingue mayúsculas de minúsculas; con strict: true solo se aceptan mayúsculas.
validator.placaCar('ABC0123'); // true
validator.placaCar('abc0123'); // true — acepta minúsculas
validator.placaCar('ABC-123'); // false — no se acepta el guion
validator.placaCar('DAB0389'); // false — D no es un código de provincia
validator.placaCar('abc0123', true); // false — strict solo acepta mayúsculas
validator.placaCar('ABC0123', true); // truePlaca de moto — placaMoto()
Valida placas de motos: 2 letras + 3 dígitos + 1 letra. La primera letra debe corresponder a una provincia. Acepta un segundo parámetro opcional strict (por defecto false). En modo normal no distingue mayúsculas de minúsculas; con strict: true solo se aceptan mayúsculas.
validator.placaMoto('AA012E'); // true
validator.placaMoto('aa012e'); // true — acepta minúsculas
validator.placaMoto('AA0123'); // false — formato incorrecto
validator.placaMoto('DA039E'); // false — D no es un código de provincia
validator.placaMoto('aa012e', true); // false — strict solo acepta mayúsculas
validator.placaMoto('AA012E', true); // trueEjecutar localmente
- Clona el repositorio
git clone [email protected]:insoutt/ecuador-validator-js.git - Instala los paquetes de NPM
npm install - Edita el archivo
src/index.ts
Ejecutar las pruebas
Para ejecutar las pruebas usa el siguiente comando:
npm run testContacto
Elvis Fernando - @insoutt - Sitio web
Enlace del proyecto: https://github.com/insoutt/ecuador-validator-js
