Expresión regular de JavaScript para la verificación de número de teléfono

La capacidad de recopilar un número de teléfono y verificar rápidamente su existencia y validez tiene un gran valor para las empresas, ya sea para garantizar un alcance global para los registros de sitios web, evitar la creación de cuentas por parte de bots y proteger las credenciales de la cuenta de un usuario real.

Diferencias en los números de teléfono

Un número de teléfono válido puede adoptar diversas formas según la región. Existen reglas universales, como limitar la longitud de los dígitos o el número que contiene solo valores numéricos (con ligeras desviaciones). Aún así, en algunos casos, un número de teléfono puede adoptar un formato con paréntesis, signos más, espacios y guiones y tener diferentes sistemas de código.

Sistema de código de marcación internacional

Para algunas operaciones, como la recopilación de números para el procesamiento manual, es posible que no necesite los mecanismos para la verificación de contactos internacionales; sin embargo, a menudo es importante mantener la flexibilidad para los códigos de marcación internacionales. Esto es especialmente útil si desea introducir algún nivel de automatización.

Encontrar un prefijo de país válido también presenta algunos desafíos. por ejemplo, 7, 55, 351 y 1809 son códigos igualmente válidos, pero aún así, el proceso no es sencillo. El prefijo +1 funciona tanto para Estados Unidos como para Canadá, mientras que +34 funciona para España y las Islas Canarias.

Además, las convenciones para marcar números de teléfono varían según el lugar desde el que llame. Por ejemplo, en el Reino Unido, existen números geográficos aprobados oficialmente por la Oficina de Comunicación, como 020 para Londres o 01865 para Oxford. Esto hace que un número local pueda verse como 020 7946 0636.

Por otra parte un formato de número internacional que normalmente comienza con +44, podría ser +44 20 7946 0636. Además, un prefijo de teléfono internacional podría ser 00 en lugar de “+”, por lo que 0044 20 7946 0636 sería otra expresión del mismo número.

Si marcas al Reino Unido desde EE. UU., Deberás ingresar los dígitos 011, esto indicará que estas haciendo una llamada fuera de los Estados Unidos. En este caso, el número sería 011 0044 20 7946 0636.

Cambios a tener en cuenta en los números de teléfono alrededor del mundo

Hay factores internos y externos que afectan los sistemas de códigos de diferentes países. En el siglo XX, nueve países dejaron de existir. Dado que los números de teléfono son administrados por las autoridades nacionales de telecomunicaciones, esos sistemas de marcación tampoco existen.

También los países están proponiendo e implementando nuevos sistemas de clasificación: tarifa premium, tarifa local, llamada gratuita, etc. Una vez que los proveedores de telefonía alcanzan los límites,, simplemente pueden anunciar un nuevo código.

Las convenciones también pueden cambiar drásticamente con el tiempo. Los números de teléfono de Corea del Sur pueden tener hasta siete dígitos o hasta 11 dígitos, pero no siempre ha sido así. Además de los números de teléfono fijo y móvil, las autoridades introdujeron gradualmente nuevas versiones: números de servicio nacional, comerciales y alternativos.

Por último, debe tener en cuenta el crecimiento masivo de las comunicaciones móviles. El número de personas que dependen de los teléfonos móviles está aumentando rápidamente y es probable que el conjunto de números de teléfono disponibles tenga más implicaciones en las convenciones telefónicas internacionales.

Estándar de número de teléfono internacional, ¿Que es el E. 164?

Para simplificar los planes de numeración de telecomunicaciones, existe un formato de número de teléfono reconocido internacionalmente. Se llama UIT-T E.164 o simplemente E.164. Define la estructura y funcionalidad de las siguientes cuatro categorías principales de números:

  • Área geográfica.
  • Grupo de paÍses.
  • Red.
  • Número de suscriptor global (GSN).

El estándar E.164 elimina la ambigüedad de formato mediante las siguientes reglas:

  • Impone una longitud máxima de 15 dígitos por número de teléfono, siendo los más cortos actualmente siete dígitos.
  • Debe incluir un código de llamada de país o un código de marcación de país, como +1 y +44.
  • El siguiente elemento es el código de destino nacional (NDC), por ejemplo 7911.
  • Por último, la secuencia debe incluir un número de suscriptor (SN), por ejemplo 651780.

En total, el número de teléfono de ejemplo según E.164 es +447911651780.

El objetivo de esta regulación es tener números de teléfono válidos representados de manera consistente. Las personas que llaman deben usar un prefijo de signo más (+) en lugar de cualquier prefijo de llamada internacional. En términos de separaciones de dígitos numéricos, solo acepta espacios sin guiones. Si bien la incorporación de la tilde (~) es técnicamente aceptable para indicar un tono de marcación adicional, no se incluye en la expresión regular porque se usa con poca frecuencia.

Recolección de información

El proceso de recopilación de información del usuario debe minimizar la posibilidad de activar un error de validación por formato de número de teléfono incorrecto. Un error de validación puede hacer que los usuarios se sientan frustrados y abandonen el sitio web, pero existen prácticas efectivas que ayudan a los usuarios a ingresar números de teléfono en formatos válidos.

Proporcionar sugerencias al usuario

Como una forma de simplificar y mejorar la experiencia del usuario, hay un par de formas de ayudar a los usuarios a ingresar la información correctamente la primera vez. Esto se puede hacer a través de elementos de diseño que proporcionarán sugerencias para la entrada esperada.

El primero es usar mensajes de texto debajo del campo de entrada o aquellos que aparecen cuando el usuario comienza a ingresar información. El mensaje puede decir: "Ingrese el número en formato internacional sin el símbolo +, por ejemplo (899) 999999".

La segunda opción es utilizar el atributo HTML de marcador de posición. El atributo de marcador de posición ayudará a mostrar el formato de entrada esperado sin utilizar etiquetas adicionales. Por ejemplo, puede ser un número de muestra o una breve explicación:

Expresión regular

¿Qué es el “tel” Input Type?

El tipo de entrada "tel" está diseñado para ayudar a los desarrolladores web a crear campos de entrada para números de teléfono y se utiliza de la siguiente manera:

Input type tel

 

Sin embargo, los complementos no admiten mucho este atributo. La mayoría de los navegadores procesarán su campo de entrada como una entrada de "texto" normal, por lo tanto, no se recomienda confiar exclusivamente en el atributo "tel".

Plugins de Javascript para números de teléfono

JavaScript es conocido por su amplia variedad de plugins. Le permiten ejecutar las tareas diarias de manera eficiente sin tener que escribir las mismas líneas de código una y otra vez. Para la validación en tiempo real de números de teléfono, existen muchos plugins que le permiten implementar rápidamente lo siguiente:

  • Adjunte un menú desplegable de países que permita a los usuarios seleccionar fácilmente su código de país internacional.
  • Detecte la ubicación utilizando la dirección IP del visitante y proporcióneles el marcador de posición de entrada según el formato de número esperado para su país.
  • Convierta rápidamente la entrada del usuario a un formato de número de teléfono estándar reconocido internacionalmente.
  • Valide el número proporcionando controles específicos, incluidos los tipos de error.
  • Muestre los iconos de la bandera del país y otros elementos con un diseño vanguardista.

La mayoría de los plugins también son compatibles con todas las variedades de marcos y plataformas de JavaScript. Esto significa una instalación plug-and-play real y de un fácil acceso a muchas opciones de personalización.

¿Qué es el Libphonenumber Library?

Uno de los plugins más populares para el formato y análisis de números de teléfono es la biblioteca Libphonenumber lanzada por Google. Inicialmente fue creado para ser utilizado en sistemas operativos Android.

Fue adaptado por Google para su uso en sistemas Java, C ++ y JavaScript, pero también ha sido reescrito por miembros de la comunidad. A continuación, hablaremos de la versión Libphonenumber-js de esa biblioteca, que proporciona una mejor optimización y más funciones en comparación con el puerto JavaScript generado automáticamente por Google.

Conceptos básicos del libphonenumber library

La biblioteca puede formatear, analizar y validar números de teléfono internacionales utilizando los siguientes scripts:

  • getNumberType: determina el tipo de número de teléfono válido. Si es posible, categoriza números móviles, de tarifa fija, gratuitos, de tarifa premium, VoIP o personales.
  • isNumberMatch: utiliza intervalos de confianza para determinar si dos números son idénticos.
  • getExampleNumber / getExampleNumberByType: muestra números de ejemplo para diferentes ubicaciones. También puede ordenarlos por tipos específicos.
  • isPossibleNumber: determina si el número podría ser válido en función de su longitud.
  • isValidNumber: valida números por diferentes longitudes, códigos de país y prefijo de número.
  • AsYouTypeFormatter: formatea los números de teléfono a medida que se ingresan.
  • findNumbers: busca valores numéricos de caracteres no numéricos.
  • PhoneNumberOfflineGeocoder: realiza la codificación geográfica de números de teléfono internacionales.

Configuración de libphonenumber library

La forma más fácil de instalar Libphonenumber es usando un administrador de paquetes JS:

via npm
$ npm install libphonenumber-js --save
via yarn
$ yarn add libphonenumber-js

Si no está utilizando un paquete, utilice una versión independiente de un CDN. El complemento no requiere ninguna configuración y se puede utilizar inmediatamente después de la instalación.

Coding en libphonenumber library

Lo mejor de la biblioteca es su capacidad para analizar y formatear automáticamente números de teléfono en cualquier entrada. Puede comenzar incluso con texto sin formato de tipo mixto:

Formatear automáticamente números de teléfono

La biblioteca le brinda la capacidad de transformar rápidamente un número de teléfono en cualquier estándar web común:

Número de teléfono en estándar web

Como era de esperar, la biblioteca tiene un par de métodos básicos de validación como isPossible () e isValid (). Ofrecen un uso práctico de expresiones regulares que comprueban si el número de teléfono se ingresó correctamente.

También hay una adaptación de React de esa biblioteca con componentes frontales como banderas de cada país.

Validar un número telefónico con expresión regular de Javascript

Asignaremos una expresión regular para verificar y validar un número de teléfono:

/ ^ \ (? (\ d {3}) \)? [-]? (\ d {3}) [-]? (\ d {4}) $ /

Para comprender mejor lo que implica, aquí hay un desglose de todos los elementos.

  • / ^ \ (?: Una de las formas opcionales del número puede comenzar con un paréntesis abierto.
  • (\ d {3}): Entonces debe incluir tres dígitos numéricos. Si no hay paréntesis, el número debe comenzar con estos dígitos, por ejemplo - (541 o 541.
  • \) ?: Aqui se proporciona una opción para incluir un paréntesis cerrado.
  • [-] ?: La cadena puede contener opcionalmente un guión después del paréntesis o después de los primeros tres dígitos.
  • (\ d {3}): Entonces el número debe contener otros tres dígitos. Dependiendo de sus opciones anteriores, puede verse como (541) -753, 541-753 o 541753.
  • [-] ?: Una vez más, puede incluir un guión opcional al final - (541) -753-, 541-753- o 541753-.
  • (\ d {4}) $ /: Por último, la secuencia debe terminar con una secuencia de cuatro dígitos. Puede verse como (541) -753-6010, 541-753-6010, 541753-6010 o 541753-6010.

En resumen, hemos analizado todo tipo de complejidades y sutilezas asociadas con la recopilación, validación y visualización de números de teléfono. Tenga en cuenta las diferencias en los formatos internacionales, a menos que planee realizar operaciones únicamente en un país.

Recuerde que cualquier sistema de verificación está diseñado para ayudar al usuario a ingresar correctamente su número de teléfono real. Asegúrese de que su formulario acepte todos los tipos de números de teléfono válidos en su país y otros países esperados, y asegúrese de tener en cuenta los casos atípicos y las diversas opciones de entrada.

Su objetivo es establecer reglas bastante flexibles que no obliguen a una persona a reescribir su número varias veces, mientras simultaneamente filtran con éxito los números fraudulentos.

Si deseas implementar lo aprendido en empresa o app, puedes crear una cuenta gratuita en Voximplant Plataforma e iniciar con la implementación de validación de números telefónicos con Javascript en tu empresa.

Crea tu cuenta en Voximplant

Si deseas comprar números de teléfono en todo el mundo y/o verificarlos fácil,rápido y sin código te invitamos a que crees una cuenta gratuita en nuestra plataforma fácil de usar Voximplan Kit

Crea tu cuenta en Voximplant Kit

Si tienes una operación con más de 20 agentes o más de 100.000 llamadas mensuales y deseas una asesoría personalizada, te invitamos a que diligencies el formulario de esta página web.