Tema 6 · Posición

Anclas de Posición (^, $), Límites de Palabra (\b) y Aserciones (\A, \z)

Fija coincidencias al inicio o fin del texto para evitar validaciones incompletas y utiliza \b y \B para delimitar fronteras de palabras exactas.

¿Qué son las Anclas de Posición?

A diferencia de las clases de caracteres que consumen y coinciden con texto real, las anclas no consumen caracteres: son aserciones de posición de longitud cero. Indican dónde debe ocurrir la coincidencia.

Ancla Nombre Descripción
^ Inicio (Caret) Coincide con el inicio absoluto de la cadena (o inicio de cada línea si se usa el modificador m).
$ Fin (Dólar) Coincide con el fin absoluto de la cadena (o fin de cada línea con modificador m).
\A Inicio Absoluto Coincide únicamente con el inicio absoluto de la cadena, incluso si el modificador multilínea m está activo.
\z Fin Absoluto Coincide únicamente con el fin absoluto de la cadena, ignorando saltos de línea finales y modificador m.
🚨
Peligro de Seguridad: Olvidar las Anclas en Validaciones
Si intentas validar un código postal numérico con /\d{5}/ en lugar de /^\d{5}$/, un atacante que envíe "90210; DROP TABLE usuarios; --" será considerado válido por PHP, porque la subcadena inicial contiene 5 dígitos. ¡Usa siempre ^ y $ al validar campos de formulario!

Límites de Palabra: \b y \B

El metacarácter \b (word boundary) representa la frontera invisible entre un carácter alfanumérico (\w) y uno que no lo es (espacios, signos de puntuación o el inicio/fin del texto).

  • /\bcat\b/i: Coincide con la palabra "cat" en "the cat is sleeping", pero no coincidirá dentro de "catalog" ni de "bobcat".
  • /\Bcat\b/i: Coincide solo cuando "cat" está precedido por caracteres de palabra (ej: dentro de "bobcat" o "scat").

⚡ Buscador de Palabras Exactas con Límites de Palabra (\b)

Ejemplo interactivo. Comparamos cómo buscar la palabra "sol" sin límites (encontrando falsos positivos como "solución" o "resolución") vs usando \bsol\b:

limites_palabra.php
Solo lectura
<?php
$frases = [
    'El sol brilla intensamente hoy en la playa.',
    'Buscamos una solución técnica para el problema.',
    'La resolución de pantalla es 4K UHD.',
    'Toma un poco de sol por la mañana temprano.',
    'Comprar entradas para el concierto de salsa.'
];

// 1. Patrón sin límites (provoca falsos positivos):
$patronSinLimites = '/sol/i';

// 2. Patrón con límites exactos (\b):
$patronConLimites = '/\bsol\b/i';

echo "<div style='font-family:system-ui; max-width:640px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>☀️ Búsqueda con Límites de Palabra (\\b)</h3>";

echo "<h4 style='color:#dc2626; margin-bottom:8px;'>1. Búsqueda sin límites (/sol/i) — Falsos Positivos:</h4>";
foreach ($frases as $frase) {
    if (preg_match($patronSinLimites, $frase)) {
        $resaltado = preg_replace($patronSinLimites, '<mark style="background:#fee2e2; color:#991b1b; font-weight:bold;">$0</mark>', $frase);
        echo "<div style='font-size:13px; margin-bottom:4px; color:#475569;'>• $resaltado</div>";
    }
}

echo "<hr style='border:none; border-top:1px solid #e2e8f0; margin:15px 0;'>";

echo "<h4 style='color:#059669; margin-bottom:8px;'>2. Búsqueda con límites exactos (/\\bsol\\b/i) — Precisión Total:</h4>";
foreach ($frases as $frase) {
    if (preg_match($patronConLimites, $frase)) {
        $resaltado = preg_replace($patronConLimites, '<mark style="background:#dcfce7; color:#166534; font-weight:bold; padding:2px 4px; border-radius:3px;">$0</mark>', $frase);
        echo "<div style='font-size:13px; margin-bottom:4px; color:#1e293b; font-weight:500;'>✅ $resaltado</div>";
    }
}

echo "</div>";
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Por qué validar un código de barras con "/\d{8}/" sin las anclas "^" y "$" es una mala práctica de seguridad?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Regex en PHP: Expresiones Regulares & PCRE y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.