Expresiones regulares

¿Qué son las expresiones regulares?

Definición

Una expresión regular (abreviada frecuentemente como Regex o RegExp) es una secuencia de caracteres que forma un patrón de búsqueda. Se utiliza principalmente para encontrar, validar o reemplazar texto dentro de cadenas más grandes de manera muy flexible y potente.​

En programación (ya sea en Java, Kotlin, PHP o SQL), actúan como una «máscara» o plantilla: defines cómo debe ser el texto que buscas (por ejemplo: «quiero algo que empiece por ‘A’ y termine con tres números») y el motor de regex busca todas las coincidencias.​

Sintaxis Básica

Para entender los ejemplos, primero debes conocer algunos «metacaracteres» clave:

. (Punto): Coincide con cualquier carácter (excepto salto de línea).

\d: Coincide con cualquier dígito (0-9).

\w: Coincide con cualquier letra o número (alfanumérico).

^: Indica el inicio de la línea o cadena.

$: Indica el final de la línea o cadena.

*: El elemento anterior aparece 0 o más veces.

+: El elemento anterior aparece 1 o más veces.

?: El elemento anterior es opcional (aparece 0 o 1 vez).

{n}: El elemento anterior aparece exactamente n veces.​

Ejemplos Prácticos

Aquí tienes varios ejemplos aplicados que te pueden servir para validaciones en formularios web o apps:

1. Validar un DNI español (simplificado)

Busca 8 números seguidos de una letra (mayúscula o minúscula).

Patrón:

^\d{8}[A-Za-z]$

Explicación:

^: Empieza aquí.

\d{8}: Exactamente 8 dígitos.

[A-Za-z]: Una letra (rango A-Z o a-z).

$: Termina aquí (no permite texto extra después).

2. Validar una matrícula de coche actual (España)

Busca 4 números seguidos de 3 letras mayúsculas (sin vocales, aunque el patrón general suele simplificarse).

Patrón:

^\d{4}\s?[BCDFGHJKLMNPRSTVWXYZ]{3}$

Explicación:

\d{4}: Cuatro dígitos iniciales (ej. 1234).

\s?: Un espacio opcional (puede estar o no).

[…]: Lista de letras permitidas (consonantes válidas en matrículas).

{3}: Exactamente 3 letras de ese conjunto.​

3. Validar un correo electrónico (Básico)

Verifica que tenga texto, una arroba, más texto, un punto y una extensión de 2 a 4 letras.

Patrón: ^[\w\.-]+@[\w\.-]+\.\w{2,4}$

Explicación:

[\w\.-]+: Uno o más caracteres alfanuméricos, puntos o guiones.

@: El símbolo arroba literal.

\w{2,4}: La extensión del dominio (ej. .com, .es), de 2 a 4 letras.

4. Encontrar fechas en formato DD/MM/AAAA

Patrón:

\b(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/\d{4}\b

Explicación:

\b: Límite de palabra (para no coger números dentro de otra cosa).

(0[1-9]|[12][0-9]|3[01]): Grupo complejo para el día. Acepta 01-09, 10-29 o 30-31.

/: Separador literal.

\d{4}: Año de 4 cifras.

Uso en tus lenguajes (Kotlin/SQL)

En SQL

SELECT *
FROM usuarios
WHERE email REGEXP '^[A-Za-z0-9._]+@gmail\\.com$'

En Kotlin:

val regex = Regex("^\\d{8}[A-Z]$") 
if (regex.matches("12345678Z")) 
    { println("DNI válido") }

En Java usando Pattern y Matcher

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        // Equivalente a: val regex = Regex("^\\d{8}[A-Z]$")
        Pattern regex = Pattern.compile("^\\d{8}[A-Z]$");

        // Equivalente a: regex.matches("12345678Z")
        // En Java se crea un "Matcher" para realizar la comprobación
        Matcher matcher = regex.matcher("12345678Z");

        if (matcher.matches()) {
            System.out.println("DNI válido");
        }
    }
}

 

Tutorial de Regex: Aprender con ejemplos de expresiones regulares

Deja una respuesta