La Guía Rápida del Desarrollador de Expresiones Regulares النماذج التي يستحق حفظها

نُشرت في
La Guía Rápida del Desarrollador de Regex: Patrones que Vale la Pena Recordar **1**
إعلان · يزيل؟

El patrón de expresión regular es una de esas habilidades que genera beneficios en cada lenguaje que escribas. El mismo patrón que valida un correo electrónico en Python elimina cadenas de consulta en Go y limpia la entrada del formulario en JavaScript. Apréndelo una vez, úsalo en todas partes.

Esto no es un manual de sintaxis. Son los patrones que realmente usas en proyectos reales — aquellos que aparecen en validadores de formularios, parsers de registros, rutas de URLs y tuberías de datos. La tabla a continuación es el núcleo del tema. El texto que la rodea explica dónde las personas se queman.

Los patrones que merecen conservar

Estos 11 patrones cubren los escenarios que aparecen repetidamente en el código de producción. Usa Pruebas de Regex para validar estos elementos con tus propios datos de entrada antes de conectarlos.

نمط¿Qué se correspondeEjemplo de Partidoملحوظات
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$عنوان البريد الإلكترونيuser@example.comDiseñado de manera permisiva — la implementación real del RFC 5322 es un agujero de conejo. Ancla con ^$.
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+URL de HTTP/HTTPShttps://example.com/path?q=1No valida estructura — solo confirma que parece ser una URL.
^(\d{1,3}\.){3}\d{1,3}$Dirección IPv4 (formato solo)192.168.1.1Coincidencias 999.999.999.999 — validar el rango en el código, no en la expresión regular.
^(\+\d{1,3}[\s-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$número de teléfono norteamericano(555) 867-5309Trata los delimitadores comunes. Los formatos internacionales varían demasiado para un único patrón.
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}UUID versión 4550e8400-e29b-41d4-a716-446655440000Insensitivo a mayúsculas — use i bandar o añadir A-F clases de caracteres.
^[a-z0-9]+(?:-[a-z0-9]+)*$enlace de URLmy-article-titleNo hifas iniciales ni finales, sin hifas consecutivas.
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$Fecha ISO 8601 (AAAA-MM-DD)2026-04-10Verifica el formato y rango, pero no valida la fecha del calendario (febrero 31 pasa).
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$color hexa CSS#ff6600 أو #f60Ambos códigos de abreviatura de **3** y **6** dígitos. Añade {8} para hexadecimal RGBA de 8 dígitos
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([\w.-]+))?(?:\+([\w.-]+))?$Cadena de versión semántica1.2.3-beta.1+build.42Recopila metadatos de versión y construcción como grupos opcionales.
\b(?:\d{4}[\s-]?){3}\d{4}\bNúmero de tarjeta de crédito (mascarado, no validar)4111 1111 1111 1111Usa para mascarar en registros, no para validación. Verificación de número de Luhn requiere código.
\s+Espacio en blanco corre"hello world""hello world"Sustituya un espacio único para la normalización del espacio.

Dónde los patrones se rompen en la práctica

Hambreño vs. Despistado de coincidencias

Cuantificadores como * و + son avaros por defecto — consumen todo lo posible. Esto te afecta al extraer contenido entre delimitadores. <.+> en el <b>bold</b> coincide con la cadena completa, no <b>Cambia a **lento** con .+? para detenerse en el primer delimitador de cierre en lugar del último.

Anclaje: Cuando **y** y $ no son suficientes

Sin anclas, un patrón puede coincidir en cualquier lugar de una cadena. \d+ coinciden abc123def — encuentra los dígitos del medio. Para la validación de cadena completa, envuelve los patrones en ^...$En modo de múltiples líneas (m no bandera) ^ و $ mantenga los límites de línea, no las fronteras completas de la cadena. Si estás validando un solo valor (un correo electrónico, un UUID), configúralo así: m intencionalmente, no por costumbre.

El Error del Bandera de Líneas Múltiples

ال m el pañuelo cambia lo que es ^ و $ significado. El s el modo **dotAll** modifica . coinciden — sin ello, . no coincide con los caracteres de nueva línea. Analizando entradas de registro multilineas. .+¿Necesitas s أو [\s\S]+ como alternativa para motores que no soportan `dotAll`.

Pruebas Antes de la Conexión

No debes introducir un patrón regular (regex) en una aplicación y probarlo solo con una entrada de camino principal feliz. Los patrones fallan en casos límite: caracteres Unicode, cadenas vacías, espacios en blanco al inicio o final, entradas que casi pero no del todo son válidas. Prueba de RegEx Tester IO Tools puede ejecutar un patrón contra múltiples cadenas de prueba simultáneamente para que pueda verificar los casos válidos y los inválidos al mismo tiempo antes de que el código se envíe. Herramienta de ficha rápida para expresiones regulares útil cuando estás en medio de crear un patrón y necesitas una referencia rápida de sintaxis sin salir del navegador.

Al momento de probar, construya una matriz: qué debe coincidir, qué **definitivamente no** debe coincidir y qué está en el límite. Un validador de correos electrónicos que acepta user@ rechaza user+tag@example.co.uk es peor que ningún validador en absoluto.

Características Lingüísticas que Vale la Pena Conocer

Los patrones de la tabla arriba son ampliamente portátiles, pero el motor importa en los bordes.

  • جافا سكريبت Usa el motor de expresiones regulares ECMA. Grupos de captura nombrados ((?<name>...)sonido y video son compatibles desde ES2018+. v bandera (presentada en ES2024) añade notación de conjuntos y escapes de propiedades de Unicode. Los *lookbehind* funcionan; los *lookbehind* largos son compatibles desde ES2018+ y tienen restricciones de longitud variables en algunas versiones antiguas de V8.
  • بايثون usa el re módulo (adjacente a PCRE pero no idéntico). El re.compile() patrón vale la pena usar — los patrones compilados son más rápidos cuando se llaman repetidamente en bucles. Una diferencia sutil: el de Python \b el límite de palabras es consciente por defecto del código Unicode, por lo que funciona con caracteres de palabras no ASCII. El JavaScript \b es solo ASCII hasta que uses el u أو v bandera.
  • يذهب Usa sintaxis de RE2, que excluye deliberadamente referencias cruzadas y adelantos. Esto es una decisión de seguridad — RE2 garantiza coincidencia en tiempo lineal, lo que evita retroceso catastrófico. Si estás portando un patrón desde Python o JS a Go y usa adelantos o referencias cruzadas, necesitarás reorganizar la lógica.

Ejemplo del mundo real: Validación de correos electrónicos a través de idiomas

El mismo patrón, dos implementaciones: un validador de formularios en JavaScript y una verificación de entrada en Python.

// JavaScript — client-side form validation
const EMAIL_RE = /^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$/;

function validateEmail(input) {
  const value = input.trim();
  if (!EMAIL_RE.test(value)) {
    throw new Error(`Invalid email address: ${value}`);
  }
  return value;
}

// Usage
document.querySelector('#signup-form').addEventListener('submit', (e) => {
  e.preventDefault();
  try {
    const email = validateEmail(e.target.email.value);
    submitForm({ email });
  } catch (err) {
    showError(err.message);
  }
});
# Python — API request validation
import re

EMAIL_RE = re.compile(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$')

def validate_email(value: str) -> str:
    value = value.strip()
    if not EMAIL_RE.match(value):
        raise ValueError(f"Invalid email address: {value!r}")
    return value

# Usage in a Flask route
@app.route('/signup', methods=['POST'])
def signup():
    try:
        email = validate_email(request.json.get('email', ''))
    except ValueError as e:
        return jsonify({'error': str(e)}), 400
    # continue with valid email...

Ambos usan el mismo patrón subyacente. La única diferencia significativa es la de **Python**. re.compile() compila de antemano el patrón para que las llamadas repetidas no lo reparsen en cada invocación — vale la pena hacerlo en cualquier camino crítico.

Guarde un Resumen Rápido Personal

Los patrones superiores manejan los casos comunes, pero con el tiempo acumularás tus propios patrones — formatos de registro específicos para tu pila (stack), esquemas de identificadores de sistemas internos y formatos de fechas que tu equipo de datos insiste en usar. Una breve, curada archivo con patrones probados que puedes pegar es más valioso que memorizar las reglas sintácticas. Pruébalos una vez, anótalos con su propósito y refiérte a ellos en lugar de reconstruirlos desde cero cada vez.

هل تريد حذف الإعلانات؟ تخلص من الإعلانات اليوم

تثبيت ملحقاتنا

أضف أدوات IO إلى متصفحك المفضل للوصول الفوري والبحث بشكل أسرع

أضف لـ إضافة كروم أضف لـ امتداد الحافة أضف لـ إضافة فايرفوكس أضف لـ ملحق الأوبرا

وصلت لوحة النتائج!

لوحة النتائج هي طريقة ممتعة لتتبع ألعابك، يتم تخزين جميع البيانات في متصفحك. المزيد من الميزات قريبا!

إعلان · يزيل؟
إعلان · يزيل؟
إعلان · يزيل؟

ركن الأخبار مع أبرز التقنيات

شارك

ساعدنا على الاستمرار في تقديم أدوات مجانية قيمة

اشتري لي قهوة
إعلان · يزيل؟