Empieza ahora
Los números de teléfono varían en forma y se manejan de manera diferente de un país a otro. el módulo de
betterCallSaul.js
puede ayudarnos a formatear correctamente
los números de teléfono junto
con los códigos de países y también validar campos en interfaces.
En ejecución
Interpretación de un número
digita un número de teléfono internacional en el input de aquí abajo para ver cómo extrae los datos del número
Buscar números en texto
Escribe textos en lenguaje natural que contengan números de teléfono con formato internacional.
Tutorial
Una vez importada la librería en el head, ya sea con la CDN o si descargaste el archivo, podrás ejecutar el código
que se presentará a continuación:
Analizando un número de teléfono
Veamos cómo podemos usar el
_getInfoInNumber()
, para que nos retorne un objeto con la información,
debemos pasarle de argumento el número de teléfono completo, incluido el código del país.
La función _getInfoInNumber() devuelve los siguientes datos: el código del país
(
codeCountry
), el código
de llamada
del país (
codeCall
), el número sin el código de llamada del país (
numberWithoutCodeCall
),
el número de completo (
complete
),
el nombre del país en inglés (
nameCountry
) y en español (
nameCountryES
), el formato
nacional del número (
formatNational
),
el formato internacional (
formatInternational
), el formato rfc 3966 (
formatRFC3966
), el
tipo de línea (
type
), estima en falso
o verdadero de si es posible o no el número (
isPosible
) y además busca rutas de imágenes
representativas para el país, una en
relación 1:1 (
flagSVG_1x1
) y la otra en 4:3 (
flagSVG_4x3
).
Analizando cadenas con ruido.
Se le denomina ruido a toda a toda perturbación textual que haya en el input, que no corresponda con un
número de teléfono, datos que para el intérprete no tienen ningún sentido, puesto que no fue entrenado para esto. El
intérprete es capaz de extraer los números de teléfono con formato internacional que hayan en una cadena.
Para la cadena
"Mi número es (+57)310-725 7814, me llamo Jeff"
, el número a extraer es +573107257814,
tiene ruido por la derecha, por la izquierda y en medio, sin embargo el siguiente código extraerá y retornará los
datos de todos los números con formato internacional que encuentre en la cadena suministrada
La función _findPhoneNumbers() devuelve un arreglo con el _getInfoInNumber() de todos los números
encontrados
Salida esperada:
¿Cómo funciona?
Esto lo hace por medio de expresiones regulares, y algoritmos, pudiendo retornar así un objeto con la información
que puede extraer del número, para que quede claro, les voy a explicar con un ejemplo lo que hace internamente el
programas.
Hablemos en el caso de Colombia, los teléfonos tienen 8, 10 y 11 dígitos, debe existir una función que una vez
reconocido el indicativo del país, extraiga el resto del número para hacer las correspondientes verificaciones.
En el caso de los números con 10 dígitos.
-
La expresión regular es la siguiente:
y con esto podremos comprobar si un número de al menos 10 dígitos, está bien o mal escrito, ejemplo:
Número bien escrito con formato colombiano
Número escrito escrito con formato colombiano, no tiene el mínimo de 10 dígitos
También hay que analizar que los números de 10 dígitos en colombia, aparte de iniciar
por 3 sus siguientes 2 dígitos tienen restricciones, los primeros 3 dígitos para esta
clase de números son algunos de estos:
300, 301, 302, 304, 305 (Tigo)
303 (Uff Móvil)
304 (UNE)
305 (ETB)
310, 311, 312, 313, 314, 320, 321, 322, 323 Claro anteriormente conocido como Comcel
315, 316, 317, 318 Movistar
319 Virgin Mobile
350, 351 Avantel
lo que significa que la expresión regular anteriormente descrita debe ser capaz de excluir cualquier otro número
que no empiece por alguno de estos números, siendo así entonces vamos a probar.
Como se puede observar, los números que no inicien por estos indicativos, no son números válidos para números de
10 dígitos de colombia
-
De esta misma manera, se pueden generar las expresiones regulares para los números colombianos de 8 y 11
dígitos:
Estas expresiones son más cortas, puesto que las restricciones son menores.
Y bueno, en esencia así es la lógica con la que trabaja el programa