Las coordenadas están en todas partes. Con expresiones regulares bien pensadas puedes validar que una latitud y longitud estén bien formadas en formato decimal o en grados, minutos y segundos (DMS), sin pelearte con rangos numéricos que pertenecen al lenguaje de programación. Aquí tienes patrones prácticos, trucos para CSV y un extra para direcciones de what3words.
¿Cómo validar latitud y longitud con expresiones regulares?
Validar con regex es validar la forma, no el contenido matemático. Así evitas falsos negativos y dejas la lógica de rango a tu lenguaje favorito, como JavaScript o PHP.
¿Por qué validar forma y no valor?
Diferencia clave: caracteres vs. valores.
La regex garantiza el formato correcto (signo, dígitos, separadores).
El lenguaje valida rango (ejemplo: 0–180 o 0–360). No lo fuerces en la regex.
Evita sobrevalidar: más mantenible y menos errores.
¿Qué patrón usar para formato decimal?
Coordenada individual con precisión entre 1 y 6 decimales, con signo opcional y punto obligatorio:
-?\d{1,3}\.\d{1,6}
Par lat, long con coma y posible espacio (útil en CSV), anclado a línea completa:
^-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6}$
Cuando la línea trae más campos (ejemplo: altitud tras otra coma), puedes permitir el resto con comodín:
^-?\d{1,3}\.\d{1,6},\s?-?\d{1,3}\.\d{1,6},.*$
punto y coma del truco: usa .* si puede haber cero o más caracteres. .+ exigiría al menos uno.
espacios opcionales en CSV: \s? evita romper el parseo por “espacios de cortesía”.
anclajes ^ y $: aseguran que todo sea válido, no solo un fragmento.
¿Cómo construir regex para grados, minutos y segundos (DMS)?
El formato DMS es más legible: grados, minutos, segundos con centésimas, comillas correctas y punto cardinal. Recuerda: la regex valida la forma; el rango (0–60, etc.) lo valida el lenguaje.
¿Qué estructura debe cumplir DMS?
Estructura por coordenada: signo opcional, 1–3 dígitos de grados, espacio, 1–2 dígitos de minutos + comilla simple ', espacio, 1–2 dígitos de segundos + punto + exactamente 2 decimales, comilla doble ", espacio y punto cardinal.
Par DMS anclado, con coma intermedia y posible espacio. Primera coordenada con east/west y segunda con north/south:
comillas correctas: ' para minutos y " para segundos.
precisión fija en segundos: \d{2} para centésimas; si es 0, conserva 00.
error común: confundir [EW] con [NS] entre izquierda y derecha. Asegura el orden correcto.
¿Cómo asegurar líneas bien formadas?
usa anclajes ^...$ para que no “cuelen” letras en la cola.
si metes una letra en los números, la regex debe fallar, y si no falla, revisa tus clases de caracteres.
valores fuera de rango (p. ej., 354°) pueden pasar la regex, y está bien: el lenguaje hará esa validación numérica.
¿Cómo modelar direcciones what3words con regex?
what3words nombra cada cuadrado de 3×3 metros con tres palabras en minúsculas separadas por puntos. Para texto puro, evita atajos como \w porque incluyen dígitos y guion bajo.
¿Qué patrón capta tres palabras separadas por puntos?
Tres palabras con letras a-z, de 3 o más caracteres, separadas por puntos y ancladas:
^[a-z]{3,}\.[a-z]{3,}\.[a-z]{3,}$
Variantes útiles y equivalencias de cuantificadores:
equivalente a “tres o más” sin llaves: [a-z][a-z][a-z]+.
si la primera letra pudiera ser alfanumérica: ^[a-z0-9][a-z]{2,}\.[a-z]{3,}\.[a-z]{3,}$.
Consejos prácticos:
clases de caracteres explícitas evitan sorpresas: no uses\w aquí.
cuantificadores: + es uno o más; {3,} es “tres o más”. Ambas formas son válidas.
consistencia: decide un estilo y úsalo en todo el patrón.
¿Quieres que revisemos un patrón específico o un ejemplo real de tus datos? Compártelo en los comentarios y lo afinamos juntos.