npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ecuador-validator

v2.1.0

Published

Validador de datos más usados en Ecuador

Readme

Comenzando

Instalación

Instala el paquete con npm:

npm install ecuador-validator

Puedes 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álida

RUC — 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, 5939xxxxxxxx o +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, 59322xxxxxx o +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 área

Placa 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); // true

Placa 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); // true

Ejecutar localmente

  1. Clona el repositorio
    git clone [email protected]:insoutt/ecuador-validator-js.git
  2. Instala los paquetes de NPM
    npm install
  3. Edita el archivo src/index.ts

Ejecutar las pruebas

Para ejecutar las pruebas usa el siguiente comando:

npm run test

Contacto

Elvis Fernando - @insoutt - Sitio web

Enlace del proyecto: https://github.com/insoutt/ecuador-validator-js