TEMA: Validar formato de correo electrónico con expresiones regulares en PL SQL

Función para validar el formato de un correo electrónico usando expresiones regulares en PL SQL Oracle

3/31/20252 min read

Función con expresiones regulares:

para validar el formato de una dirección de correo electrónico usando PL Sql Oracle

Probablemente, te has enfrentado a esta situación: tienes una tabla y un mantenimiento donde los usuarios registran correos electrónicos que luego debes usarlos para enviar información a esas direcciones de correo desde la base de datos, pero te encuentras con errores en el envío de los correos porque el formato de la dirección de correo está incorrecto.

Aquí te muestro cómo crear una función de validación del formato de la dirección de correo usando expresiones regulares:

Ahora bien, cómo se explica esta parte

Regexp_Like (p_sub_Email, '^[A-Za-z0-9._%Ññ+-]+@[A-Za-z0-9.-]+\.[A-Za-z0-9]{2,6}$')

[A-Za-z0-9._%Ññ+-] Esta es la primera parte de una dirección de correo electrónico, que permite letras de la "A" a la "Z", de la "a" a la "z", números del 0 al 9, el punto y otros caracteres.

Luego viene el @

Después del @ viene el dominio, luego el punto y luego la extensión del dominio con un tamaño entre 2 y 6 caracteres.

Espero que esta función te sea de utilidad. Puedes adaptarla con validaciones adicionales o mejorarla según tus necesidades, también puedes cambiarla para que retorne tipo BOOLEAN en lugar de VARCHAR2. A mí me parece bien con VARCHAR2 porque me facilita usarla en las condiciones WHERE de un SELECT en SQL Plus.

A continuación te explico más sobre "Expresiones regulares en Oracle PL Sql".

En Oracle PL/SQL, las expresiones regulares son una poderosa herramienta para buscar, comparar y manipular texto. Oracle incluye funciones específicas para trabajar con expresiones regulares, como REGEXP_LIKE, REGEXP_INSTR, REGEXP_SUBSTR y REGEXP_REPLACE. Aquí te explico cómo utilizarlas:

1. REGEXP_LIKE

Se utiliza para verificar si un texto cumple con un patrón determinado. Es similar al operador LIKE, pero con soporte para expresiones regulares.

SELECT *

FROM empleados

WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');

Ejemplo: La consulta selecciona los empleados cuyos correos electrónicos tienen un formato válido.

2. REGEXP_INSTR

Devuelve la posición inicial de una subcadena que coincida con una expresión regular en un texto.

SELECT REGEXP_INSTR('abc123def', '\d+') AS posicion FROM dual;

Ejemplo: Esto devuelve la posición del primer número en el texto "abc123def" (en este caso, 4).

3. REGEXP_SUBSTR

Obtiene la subcadena que coincide con el patrón especificado.

SELECT REGEXP_SUBSTR('abc123def', '\d+') AS subcadena FROM dual;

Ejemplo: Esto devuelve 123, ya que coincide con el patrón de números en el texto.

4. REGEXP_REPLACE

Reemplaza las partes de un texto que coincidan con una expresión regular.

SELECT REGEXP_REPLACE('abc123def', '\d+', '#') AS texto_modificado FROM dual;

Ejemplo: Esto reemplaza todos los números con #, devolviendo "abc#def".

Patrones comunes en expresiones regulares

  • ^: Inicio de cadena.

  • $: Fin de cadena.

  • [a-z]: Cualquier letra minúscula.

  • [A-Z]: Cualquier letra mayúscula.

  • \d: Cualquier dígito.

  • +: Uno o más elementos.

  • *: Cero o más elementos.

  • {n,m}: Al menos n elementos, pero no más de m.

Prácticas recomendadas

  • Usa patrones claros: Mantén tus expresiones lo más simples posible para facilitar la legibilidad.

  • Valida entradas: Las expresiones regulares son útiles para validar datos como correos electrónicos, números de teléfono, etc.

  • Prueba los patrones: Antes de usarlos en código, prueba tus expresiones regulares para evitar errores inesperados.

Envíanos tus comentarios o sugerencias