Regex para URL (http y https)

Usa /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/ para comprobar que una cadena completa es una URL válida (http y https). Cada ejemplo de abajo se ha probado con el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/
Abrir en el Probador de Regex
EntradaResultado
https://example.com✓ Coincide
http://sub.example.co.uk:8080/path?q=1#top✓ Coincide
https://devpack.app/regex-tester✓ Coincide
example.com✗ No coincide
ftp://example.com✗ No coincide
https://localhost✗ No coincide
http://exa mple.com✗ No coincide

Cómo funciona el patrón

ParteSignificado
^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 false

Python

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.

Preguntas frecuentes

¿Cuál es la regex para URL (http y https)?
/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, estos coinciden: https://example.com, http://sub.example.co.uk:8080/path?q=1#top, https://devpack.app/regex-tester. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de ejemplo se cargan automáticamente, y las coincidencias se resaltan mientras editas.