Cómo funciona el patrón
| Parte | Significado |
|---|---|
^https? | Comienza con http, seguido opcionalmente de s |
:\/\/ | El literal :// (las barras escapadas para literales de regex en JavaScript) |
[A-Za-z0-9.-]+ | Nombre de host y subdominios |
\.[A-Za-z]{2,} | Un punto y un dominio de nivel superior de dos o más letras |
(?::\d{1,5})? | Un puerto opcional, como :8080 |
(?:\/[^\s]*)? | Una ruta, query string y fragmento opcionales: cualquier cosa hasta un espacio en blanco |
$ | Fin de la cadena |
Ejemplos de código
JavaScript
const re = /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'https?://[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:/[^\s]*)?', value))PHP
preg_match('/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/', $value) === 1;
Notas y limitaciones
Para validar en JavaScript, new URL(value) dentro de un try/catch es más estricto y cubre todos los casos límite; usa la regex cuando también quieras exigir http(s) y un dominio con aspecto público. Rechaza localhost y las direcciones IP sueltas a propósito.
Probador de expresiones regulares
Escribe un patrón y observa cómo se resaltan las coincidencias en tiempo real en tu texto de prueba.