La Hoja de Cálculo del Patón de los Desarrolladores Patrones que vale la pena recordar
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 corresponde | Ejemplo de Partido | Notas |
|---|---|---|---|
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ | Dirección de correo electrónico | user@example.com | Diseñado de forma permisiva — el verdadero RFC 5322 es un agujero de gato. Ancla con ^$. |
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+ | URL de HTTP/HTTPS | https://example.com/path?q=1 | No 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.1 | Coincidencias 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-5309 | Trata 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 4 | 550e8400-e29b-41d4-a716-446655440000 | Insensitivo a mayúsculas — usa i bandera o añadir A-F a clases de caracteres. |
^[a-z0-9]+(?:-[a-z0-9]+)*$ | enlace de URL | my-article-title | No 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-10 | Verifica 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 #f60 | Ambos 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ántica | 1.2.3-beta.1+build.42 | Recopila metadatos de versión y construcción como grupos opcionales en fase beta. |
\b(?:\d{4}[\s-]?){3}\d{4}\b | Número de tarjeta de crédito (mascarilla, no validar) | 4111 1111 1111 1111 | Usar 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+.vLa 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
remódulo (adjunto a PCRE pero no idéntico). Elre.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\bLa frontera de palabras es sensible a la codificación Unicode por defecto, por lo que funciona con caracteres de palabras no ASCII. El JavaScript\bes ASCII solo si no usasuovbandera. - 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.
También te puede interesar
Instalar extensiones
Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas
恵 ¡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!
Herramientas clave
Ver todo Los recién llegados
Ver todoActualizar: Nuestro última herramienta se añadió el 15 de abril de 2026
