¿Odias los anuncios? Ir Sin publicidad Hoy

La Hoja de Cálculo del Patón de los Desarrolladores Patrones que vale la pena recordar

Publicado el
La Guía Rápida del Desarrollador de Regex: Patrones que Vale la Pena Recordar 1
ANUNCIO PUBLICITARIO · ¿ELIMINAR?

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 y úsalo en todas partes.

Esto no es un manual de sintaxis. Se trata de 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 conservarse

Estos once patrones cubren los escenarios que aparecen repetidamente en el código de producción. Usa Pruebas de Regex validarlos contra tus propios datos de entrada antes de conectarlos.

Patrón¿Qué se correspondeEjemplo de PartidoNotas
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$Dirección de correo electrónicouser@example.comDiseñado de forma permisiva — el verdadero RFC 5322 es un agujero de gato. Ancla con ^$.
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+URL de HTTP/HTTPShttps://example.com/path?q=1No valida la estructura — solo confirma que parece ser una dirección de Internet.
^(\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 con expresiones regulares.
^(\+\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 son demasiado diversos 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 — usa i bandera o añadir A-F a clases de caracteres.
^[a-z0-9]+(?:-[a-z0-9]+)*$enlace de URLmy-article-titleNo guiones iniciales ni finales, sin guiones consecutivos.
^\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 hexadecimal CSS#ff6600 o #f60Ambos sistemas de abreviatura de 3 y 6 dígitos. Añadir {8} para código 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 en fase beta.
\b(?:\d{4}[\s-]?){3}\d{4}\bNúmero de tarjeta de crédito (mascarilla, no validar)4111 1111 1111 1111Usar para enmascaramiento en registros, no para validación. La verificación de Luhn requiere código.
\s+Espacio en blanco corre"hello world""hello world"Sustituya un espacio en blanco por un solo espacio para la normalización de espacios.

Donde los patrones se rompen en la práctica

Háptico vs. Correspondencia Perezosa

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

Anclaje: Cuando el ^ y el $ no son suficientes

Sin anclas, un patrón puede coincidir en cualquier lugar de una cadena. \d+ coincide abc123def — encuentra los dígitos del medio. Para la validación de cadena completa, envuelve patrones en ^...$En modo de múltiples líneas (m el estandarte), ^ y $ mantenga los límites de línea, no los límites completos de la cadena. Si estás validando un solo valor (un correo electrónico, un UUID), ajústelo m intencionalmente, no por costumbre.

El Error del Bandera de Líneas Múltiples

El m el cambio de bandera ^ y $ medio. El s El flagro **dotAll** modifica . coincide — sin ello, . No coincide con los caracteres de nueva línea. Analizando entradas de registro multilineal con .+¿Necesitas s o [\s\S]+ como alternativa para motores que no soportan `dotAll`.

Pruebas antes de conectar

No introducir un patrón regular en una aplicación y probarlo con solo una entrada de camino principal feliz. Los patrones fallan ante casos límite: caracteres Unicode, cadenas vacías, espacios en blanco al inicio o final, entradas que casi pero no tanto son válidas. Prueba de expresiones regulares IO Tools te permite 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 Es ú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 que acepta user@ rechaza user+tag@example.co.uk Es peor que no tener ningún validador en absoluto.

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

Los patrones de la tabla superior son generalmente portátiles, pero el motor importa en los márgenes.

  • JavaScript Usa el motor de expresiones regulares ECMA. Grupos de captura nombrados ((?<name>...)son soportados en ES2018+. v La bandera (introducida en ES2024) añade notación de conjuntos y escapes de propiedades de Unicode. Los *lookbehinds* funcionan; los *lookaheads* son compatibles desde ES2018+ y tienen restricciones de longitud variable en algunas versiones más antiguas de V8.
  • Pitón usa el re módulo (adjunto a PCRE pero no idéntico). El re.compile() el 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 La frontera de palabras es sensible a la codificación Unicode por defecto, por lo que funciona con caracteres de palabras no ASCII. El JavaScript \b es ASCII solo si no usas u o v bandera.
  • Ir 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 cual evita el retroceso catastrófico. Si estás portando un patrón desde Python o JavaScript a Go y usa adelantos o referencias cruzadas, necesitarás reorganizar la lógica.

Ejemplo Práctico: Validación de Correos Electrónicos en Diferentes 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() precompila el patrón para que las llamadas repetidas no lo reparsen en cada invocación — vale la pena hacerlo en cualquier camino crítico.

Mantenga un resumen personal

Los patrones superiores manejan los casos comunes, pero con el tiempo acumularás tus propios patrones — formatos de registro específicos para tu stack, esquemas de identificadores de sistemas internos y formatos de fechas que tu equipo de datos insiste en usar. Una breve selección curada de patrones probados que puedes copiar es más valiosa que memorizar 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.

¿Quieres eliminar publicidad? Adiós publicidad hoy

Instalar extensiones

Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas

añadir Extensión de Chrome añadir Extensión de borde añadir Extensión de Firefox añadir Extensión de Opera

¡El marcador ha llegado!

Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!

ANUNCIO PUBLICITARIO · ¿ELIMINAR?
ANUNCIO PUBLICITARIO · ¿ELIMINAR?
ANUNCIO PUBLICITARIO · ¿ELIMINAR?

Noticias Aspectos técnicos clave

Involucrarse

Ayúdanos a seguir brindando valiosas herramientas gratuitas

Invítame a un café
ANUNCIO PUBLICITARIO · ¿ELIMINAR?