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.2

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áfoca 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.2

Obtener versión

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

ó

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

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 array asociativo con los tipos de datos pertenecienes 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()

Tipo booleano true | false.

tel.isValid();

getType()

Retorna el tipo de teléfono. Los tipos puenden 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 existieran caracteres inválidos el retorno es: 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; ejemplo: area_code, country, etc. Para parsear la clave con el valor se debe encerrar la clave entre doble llave, así: {{ clave }}.

Las claves pueden ir separadsas o concatenadas por una coma, de este modo: {{ area_code,number }}.

Para agregar un elemento antes o después del valor, se puede incorporar un solo parámetro con el elemento a agregar, antes o después (before, after en inglés); 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, si éste es false; no va a imprimir nada, y esto incluye 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. Cómo 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 estar segmentado en la cantidad de partes que se desee utilizando la combinación del caracter 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 este: ##-###-###. El número 12345678, qudarí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

  • https://codepen.io/agustinbouillet/pen/ozNVaP
  • CODEPEN

Referencias

  • ENACOM, Ente Nacional de Comunicaciones
  • https://www.enacom.gob.ar/numeracion_p136, ENACOM, Numeración y señalización.
  • https://es.wikipedia.org/wiki/Números_telefónicos_en_Argentina, Wikipedia, Números telefónicos en Argentina, 2016

paypal