Validar nombres propios con regex
Clase 18 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
14:02 min - 9

Greedy vs lazy en regex: cuándo usar cada uno
07:47 min - 10

Negaciones con gorrito en expresiones regulares
06:49 min - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
07:22 min - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
Viendo ahora
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
17:35 min - 29

Grep: filtra archivos masivos con regex
08:18 min
Validar nombres propios con expresiones regulares es un reto que cambia entre países. Aun así, es posible partir de reglas simples: evitar dígitos, respetar mayúsculas y minúsculas y modelar espacios para nombres compuestos. Aquí verás cómo construir un patrón básico y cómo pensar en cuantificadores como +, ?, y los modos greedy y lazy.
¿Cómo validar nombres propios con regex en distintos países?
Empezar por lo local ayuda. La idea es reconocer si una línea contiene un nombre de persona de forma sencilla. Se asume que cada línea inicia con un nombre, que no hay dígitos y que la primera letra va en mayúscula. Luego se puede crecer hacia nombres compuestos y apellidos según la costumbre local.
¿Qué reglas básicas aplicar: mayúsculas, dígitos y espacios?
- No usar dígitos: si hay números, es raro que sea un nombre.
- Iniciar con mayúscula: primera letra A-Z.
- Continuar en minúsculas: tres o más letras para longitudes de cuatro o más.
- Manejar espacios con cuidado: "Juan Pablo" requiere un espacio opcional y otro bloque con mayúscula.
- Reconocer excepciones: apellidos como McCarthy o McGregor tienen mayúsculas intermedias y complican el patrón.
Ejemplo de nombre simple (solo nombre, sin apellidos), asumiendo líneas que empiezan con el nombre:
^[A-Z][a-z]{3,}$
¿Cómo usar anclas y flags case-insensitive?
El ancla ^ fuerza a que la coincidencia empiece al inicio de la línea. Si se activa el flag insensitive (i), se ignoran mayúsculas/minúsculas; pero aquí se necesita respetar el caso: mayúscula inicial y resto en minúsculas. Por eso, el patrón se construye sin el flag i.
- Con respeto a mayúsculas/minúsculas: se omite i.
- Si se usa i por error: la mayúscula inicial dejaría de ser una condición confiable.
¿Qué cuantificadores escoger: +, ?, greedy o lazy?
- {3,}: exige al menos tres minúsculas después de la inicial.
- ?: útil para marcar un bloque como opcional (por ejemplo, un segundo nombre).
- +: suma uno o más caracteres cuando el bloque es obligatorio.
- Greedy vs lazy: define si el patrón captura lo máximo o lo mínimo posible; al validar nombres, esto afecta cómo se expanden bloques opcionales.
Para un nombre compuesto como "Juan Pablo" (espacio opcional y segundo nombre con mayúscula):
^[A-Z][a-z]{3,}(?: [A-Z][a-z]*)?$
¿Cómo manejar nombres compuestos y apellidos con mayúsculas internas?
Los apellidos irlandeses como McCarthy o McGregor introducen mayúsculas en medio, lo que vuelve el patrón más complejo. Una estrategia práctica es resolver primero el nombre y, más adelante, extender a apellidos según la costumbre local. Si hay comas u otros separadores, conviene definir si se trabajará línea por línea o por campos.
- Empezar por el nombre sin apellidos.
- Añadir soporte para segundo nombre con bloque opcional.
- Posponer reglas para apellidos con mayúsculas internas.
- Evitar suposiciones fuertes cuando haya comas u otros separadores.
Ejemplo sin comas, con segundo nombre opcional (a partir de un nombre válido):
^[A-Z][a-z]{3,}(?: [A-Z][a-z]*)?$
¿Qué estrategia práctica seguir para mejorar la precisión?
La validación perfecta es difícil: el usuario puede escribir mal y hay variaciones culturales. Aun así, se puede aumentar la probabilidad de acierto combinando reglas y decisiones prácticas.
- Capitalizar cuando sea posible: llevar la primera letra a mayúscula.
- Validar contra el patrón: detectar si cumple estructura básica.
- Usar una lista corta de nombres frecuentes (15–20) del país: aumentar la probabilidad de acierto en detección línea completa.
- Iterar según la costumbre local: nombre o nombres y apellido o apellidos.
- Probar diferentes cuantificadores: decidir cuándo va +, cuándo ?, y cómo afecta greedy/lazy a los matches.
Ejemplo de flujo simple:
1) Normalizar: capitalizar la primera letra.
2) Validar: aplicar ^[A-Z][a-z]{3,}(?: [A-Z][a-z]*)?$.
3) Comprobar: si se requiere, verificar si el nombre está en la lista local de más usados.
¿Tienes un caso real con nombres compuestos o apellidos particulares? Compártelo y probamos el patrón juntos.