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

telefono-argentino

v2.0.4

Published

Validador de números de teléfono argentinos

Readme

GitHub version npm version Colaborá con el script: telefono-argentino.js, haciéndo una donación por PayPal

Validador de números de teléfono argentinos

Este script valida números de teléfono argentinos utilizando el listado oficial de numeración geográfica publicada por ENACOM (Ente Nacional de Comunicaciones).

La validación, para números no específicos, se basa en comparar el código de área y el bloque numérico asignado a cada una de las operadoras. Si estas condiciones se cumplen, se considera que los números subsiguientes podrían pertenecer a un abonado.

Actualmente, no existe un servicio que permita verificar si un número completo (código de área, bloque y número asignado), pertenece efectivamente a un abonado en servicio. Por lo tanto, este script asume esa posibilidad, quedando su interpretación y uso a criterio del usuario.

Versión numeración geográfica (ENACOM): 13 de marzo de 2025.

Versión actual

2.0.4

Obtener versión

(new TelefonoArgentino).version;
// '2.0.4'

o

const tel = new TelefonoArgentino("+5491150176006");
tel.version;
// '2.0.4'

Instalación

NPM

npm i telefono-argentino

Yarn

yarn add telefono-argentino

CDN

jsDelivr

https://www.jsdelivr.com/package/npm/telefono-argentino

Uso

var tel = new TelefonoArgentino('5491150176006');

Métodos

getData()

Retorna un objeto con los datos pertenecientes al número telefónico. Si el número de teléfono es incorrecto, retorna false.

tel.getData();
Ejemplo datos de retorno
{
    area_code : "11",
    country :"54",
    filter_input :"5491150176006",
    format :"+54 9 11 5017-6006",
    htmlify :"<span class="country">+54</span> <span class="mobile">9</span> <span class="area_code">11</span> <span class="number">5071-6006</span>"
    input :"5491150176006",
    international : false,
    mobile :"9",
    mobile_prefix : false,
    national_call : false,
    number :"50176006",
    special : false,
    specific : false,
    type :"mobile",
    block_number: "5017",
    given_number: "6006"
}

input()

Retorna el string ingresado para validar.

tel.input();

isValid()

Retorna un valor booleano: true | false.

tel.isValid();

getType()

Retorna el tipo de teléfono. Los tipos pueden ser:

  • landline Teléfono fijo.
  • mobile Teléfono móvil.
  • special Comprendido por los números como: 911, 112, 113, 114, etc.
  • specific Comprendido por los números como: 0800, 0810, etc.
tel.getType();

invalidChars()

Retorna un array con la lista de caracteres inválidos. Si no existen caracteres inválidos, retorna false.

tel.invalidChars();
Ejemplo
var tel = new TelefonoArgentino('54911501;><76006^%$^%$^');
tel.invalidChars();

// Resultado
[";", ">", "<", "^", "%", "$"]

htmlify()

Retorna el número de teléfono con cada una de sus partes encapsuladas en una etiqueta <span/>.

Ejemplo
new TelefonoArgentino("+54 9 11 4639-1234").htmlify();

Retorna:

<span class="country" data-country="1">+54</span> <span class="mobile" data-mobile="1">9</span> <span class="area-code" data-area_code="1">11</span> <span class="number" data-number="1">4639-1234</span>

Opciones

Formatos de salida

Formato

Para darle formato al número de teléfono puede configurarse un template y pasarlo al parámetro opciones usando la clave: format.

El formato por defecto contempla todos los formatos y tipos de teléfono que valida el script.

{
    format: '{{specific}}{{special}}{{international|add_after:" "}}{{country|add_after:" "}}{{mobile|add_after:" "}}{{national_call}}{{area_code|add_after:" "}}{{mobile_prefix|add_after:" "}} {{number}}'
}

El formato solo acepta las claves de retorno del script (por ejemplo: area_code, country, etc.). Para reemplazar la clave por su valor, se debe encerrar la clave entre doble llave: {{ clave }}.

Las claves pueden ir separadas o concatenadas mediante una coma: {{ area_code,number }}.

Para agregar un elemento antes o después del valor, se puede incorporar un parámetro con add_before o add_after del siguiente modo:

'{{ area_code|add_after:"-" }}'

// 11-
'{{ area_code|add_after:"+",number|add_before:"=" }}'

// 11+=4639-2313

También se pueden utilizar las claves por separado; sin usar la concatenación.

'{{ area_code|add_after:"+" }}{{ number|add_before:"=" }}'

// 11+=4639-2313

Es importante tener en cuenta que si la clave no tiene valor, es decir, si es false, no se imprime nada, incluido el separador.

Ejemplos

Caso con número, código de área y código país.

const tel = new TelefonoArgentino(
    "54.3624448012",
    {
        format: '({{ country|add_after:"-" }}{{ area_code }}){{ number|add_before:" " }}'
    }
);
tel.getData().format;

// '(+54-362) 444-8012'

Sin código de país.

const tel = new TelefonoArgentino(
    "11 4639-1234",
    {
        format: '({{ country|add_after:"-" }}{{ area_code }}){{ number|add_before:" " }}'
    }
);
tel.getData().format;

// '(11) 4639-1234'

Sin código de país y código de área. Como el paréntesis queda vacío, se remueve. Los espacios y elementos agregados antes y después no se imprimen.

const tel = new TelefonoArgentino(
    "4639-1234",
    {
        format: '({{ country|add_after:"-" }}{{ area_code }}){{ number|add_before:" " }}'
    }
);
tel.getData().format;

// '4639-1234'

Formato de número

El número puede segmentarse en la cantidad de partes que se desee utilizando la combinación del carácter numeral y guión. El formato se debe pensar de derecha a izquierda. Por ejemplo, para que un número de ocho dígitos se divida en miles, el formato sería: ##-###-###. El número 12345678 quedaría de este modo: 12-345-678.

Algunos casos

const tel = new TelefonoArgentino("+54.3624448012", {numberFormat: "##-###-###"});
tel.getData().format;

// '+54 362 4-448-012'
const tel = new TelefonoArgentino("+54.3624448012", {numberFormat: "##-##-##-##"});
tel.getData().format;

// '+54 362 4-44-80-12'

Se puede incorporar el parámetro numberFormatSeparator para cambiar el separador de dígitos.

const tel = new TelefonoArgentino(
    "54.3624448012",
    {
        numberFormat: "##-###-###", 
        numberFormatSeparator: "."
    }
);
tel.getData().format;

// '+54 362 4.448.012'

Información geográfica

La información referenciada de las regiones se puede obtener de un Google spreadsheet en:

https://sheets.googleapis.com/v4/spreadsheets/14H7VE3zfllDDTC73L0bL7nyjkdodPMXvqs1CH__xgFY/values/db?key={{your-google-api-key}}&alt=json

O usar el archivo response.json ubicado dentro del directorio data, dentro del repositorio.

Ejemplo de conexión con google sheet

/**
 * Fetch data by area code
 */
async function regionByAreaCode(options = {}) {
    let data = [];
    const uri = "https://sheets.googleapis.com/v4/spreadsheets/14H7VE3zfllDDTC73L0bL7nyjkdodPMXvqs1CH__xgFY/values/db?key={{your-google-api-key}}&alt=json";
    let response = await fetch(uri, options);
    data = await response.json();
    return data;
}


// Validate
const tel = new TelefonoArgentino("+54 9 11 5017-6006");
console.log(tel.getData());

regionByAreaCode().then((data) => {
    const values = data.values.find((f) => f[0] == tel.getData().area_code);
    console.log(values);
});

Demo

Referencias


paypal