La navaja suiza para el procesamiento de texto en JavaScript, PHP y Linux.
Las expresiones regulares son patrones utilizados para encontrar combinaciones de caracteres dentro de cadenas de texto.
. : Coincide con cualquier carácter excepto nueva línea.^ : Indica el inicio de una línea.$ : Indica el final de una línea.* : Coincide con 0 o más repeticiones.+ : Coincide con 1 o más repeticiones.? : Coincide con 0 o 1 repetición.\d : Coincide con cualquier dígito (0-9).\w : Coincide con caracteres de palabra (letras, números, guion bajo).[a-z] : Rango de caracteres (de la 'a' a la 'z').En JavaScript, las expresiones regulares se pueden crear con el constructor RegExp o mediante literales entre barras inclinadas /pattern/.
// 1. Validar un correo electrónico sencillo
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
const email = "usuario@ejemplo.com";
console.log(emailRegex.test(email)); // true
// 2. Extraer todos los números de una cadena
const texto = "El precio es 45 euros y el envío 5 euros";
const numeros = texto.match(/\d+/g);
console.log(numeros); // ["45", "5"]
// 3. Reemplazar texto
const secreto = "Mi número es 123-456-789";
const ofuscado = secreto.replace(/\d/g, "*");
console.log(ofuscado); // "Mi número es ***-***-***"
PHP utiliza principalmente las funciones preg_* que implementan expresiones regulares compatibles con Perl (PCRE).
<?php
// 1. Comprobar si existe un patrón
$cadena = "Hola Mundo 2026";
if (preg_match("/[0-9]+/", $cadena, $coincidencias)) {
echo "Número encontrado: " . $coincidencias[0];
}
// 2. Reemplazo avanzado con grupos de captura
$fecha = "2026-03-31";
$nueva_fecha = preg_replace("/(\d{4})-(\d{2})-(\d{2})/", "$3/$2/$1", $fecha);
echo $nueva_fecha; // 31/03/2026
// 3. Dividir cadena por patrón
$lista = "manzana, pera; plátano. uva";
$frutas = preg_split("/[,;.]\s*/", $lista);
print_r($frutas);
?>
Las herramientas más potentes para Regex en la terminal son grep, sed y awk.
# 1. Buscar líneas que contienen una IP en un log
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/auth.log
# 2. Buscar líneas que NO terminen en .jpg (grep invertido)
ls | grep -v "\.jpg$"
# 3. Reemplazar texto en un archivo con SED (Stream Editor)
# Reemplaza 'localhost' por '127.0.0.1' globalmente
sed -i 's/localhost/127.0.0.1/g' config.php
# 4. Extraer la segunda columna de texto (espacios como delimitador)
echo "ID: 101 Nombre: Gonzalo" | awk '{print $2}' # Imprime '101'
-E con grep para habilitar las Expresiones Regulares Extendidas (ERE), lo que permite usar metacaracteres como +, ? y | sin escaparlos.