Validar números de teléfono con expresiones regulares

Este artículo se ha traducido del inglés mediante IA y puede contener errores. Sus comentarios nos ayudarán a mejorar.

Las expresiones regulares son herramientas potentes para describir patrones en el texto, incluidos los números de teléfono. Puede utilizar esta función para validar si un número de teléfono recopilado está bien formado.

En este tutorial, veremos cómo construir una expresión regular paso a paso para validar los números de teléfono recopilados.

Entender el dominio

Antes de escribir una expresión regular, es importante entender el formato esperado del texto. En este ejemplo, veremos la validación de números de teléfono móvil de la República Democrática del Congo (RDC).

En la RDC, el esquema de numeración para teléfonos móviles es el siguiente:

  • Vodacom: 81X XXX XXX o 82X XXX XXX
  • Supercell: 80X XXX XXX
  • Congo-Chine Telecom: 84X XXX XXX
  • Celltell: 97X XXX XXX, 98X XXX XXX o 99X XXX XXX

Donde "X" es cualquier dígito, 0-9.

Podemos usar los patrones anteriores para escribir una regla de validación que compruebe si un número de móvil es válido.

Una expresión regular simple

Empecemos por hacer coincidir los números de Vodacom. Cada número de móvil de Vodacom empieza por "81" o "82" y otro dígito, y luego dos grupos de tres dígitos:

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9][0-9][0-9] [0-9][0-9][0-9]")

Aquí usamos la notación de clase de caracteres para especificar un rango de caracteres:

  • [12] coincide con "1" o "2"
  • [0-9] coincide con cualquier carácter entre "0" y "9"

Podemos acortar esta expresión usando clases de caracteres que se repiten:

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9]{3} [0-9]{3}")

El {3} indica que el carácter anterior debe coincidir exactamente tres veces.

Coincidir con cualquiera de los proveedores de telefonía móvil

La gran diferencia entre los distintos proveedores es el primer grupo de dígitos:

Proveedor Patrón del primer grupo
Vodacom 8[12][0-9]
Supercell 80[0-9]
Congo-Chine 84[0-9]
Celltell 9[789][0-9]

Podemos hacer coincidir cualquiera de los proveedores anteriores agrupándolos con paréntesis y utilizando el operador de barra vertical (|) para especificar alternativas:

REGEXMATCH(PHONE_NUMBER, "((8[12][0-9])|(80[0-9])|(84[0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

En realidad, la única diferencia entre los tres primeros proveedores es el segundo dígito, por lo que podríamos simplificarlo aún más a:

REGEXMATCH(PHONE_NUMBER, "((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

Sin embargo, esto hará coincidir un número de teléfono dondequiera que aparezca en el texto. Así que "801 343 933" coincidirá, pero también lo hará "TEL: 801 343 933". Preferimos que solo se ingrese el número de teléfono en el campo de texto, por lo que podemos usar el símbolo ^ para requerir la coincidencia al principio del campo, y $ para requerir la coincidencia al final:

REGEXMATCH(PHONE_NUMBER, "^((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}$")

Calcular el nombre de los proveedores de telefonía móvil

También podemos usar la expresión regular para calcular el nombre del proveedor de telefonía móvil a partir del número de teléfono usando la función IF junto con la función REGEXMATCH:

IF(REGEXMATCH(PHONE_NUMBER, "^8[12][0-9]"), "Vodacom",
 IF(REGEXMATCH(PHONE_NUMBER, "^80[0-9]"), "Supercell",
   IF(REGEXMATCH(PHONE_NUMBER, "^84[0-9]"), "Congo-Chine",
     IF(REGEXMATCH(PHONE_NUMBER, "^9[789][0-9]"), "Celltell", "Otro"))))

Construir el formulario

Ahora que tenemos nuestras dos fórmulas, podemos añadir un formulario de recopilación de datos en ActivityInfo.

Añadir el formulario

  1. Navegue a su base de datos.
  2. Haga clic en "Añadir Formulario"
  3. Ingrese el nombre del formulario "Registro"

Añadir el campo de número de teléfono

  1. Añada un campo de texto con el nombre "Número de teléfono" y el código PHONE_NUMBER.
  2. Marque "Establecer Reglas de validación"
  3. Pegue la fórmula de validación anterior en el cuadro de reglas de validación, o abra el editor de fórmulas
Captura de pantalla del campo de número de teléfono
Captura de pantalla del campo de número de teléfono

Añadir el campo del proveedor de telefonía móvil

  1. Añada un campo calculado llamado "Proveedor de telefonía móvil"
  2. En el editor de fórmulas, pegue la declaración IF de arriba.
Captura de pantalla del campo del proveedor de telefonía móvil
Captura de pantalla del campo del proveedor de telefonía móvil

Probar el formulario

Cuando abra el formulario para ingresar datos, escribir un número de teléfono que no coincida con el formato de la RDC debería dar como resultado un error de validación:

Captura de pantalla del formulario con error de validación
Captura de pantalla del formulario con error de validación

Cuando la entrada coincide, el campo se valida y el campo calculado muestra el proveedor de telefonía móvil correcto:

Captura de pantalla del formulario válido
Captura de pantalla del formulario válido

Puede probar el formulario usted mismo.

Lecturas adicionales

Siguiente elemento
Validar sistemas de escritura