Regex brasileiros · Biblioteca de padrões

Regex de URL http e https

Regex para URLs http e https com domínio, porta opcional e caminho, útil para achar endereços em texto. Não cobre todos os casos da especificação de URL.

O padrão

https?://(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}(?::\d{2,5})?(?:/[^\s]*)?

Flags: nenhuma. Sem âncoras: para validar um campo inteiro use ^(?:padrão)$.

Só o formato. Este regex confere a aparência do texto. Ele não prova que o dado existe nem que os dígitos verificadores estão certos. Para isso use Codificador e analisador de URL.

Teste na hora

Tudo roda no seu navegador; nada do que você digita é enviado.

Exemplos

Casam

  • https://exemplo.com.br
  • http://www.exemplo.com:8080/a/b?x=1#topo
  • https://sub.dominio.exemplo.org/pagina
  • http://exemplo.io/

Não casam

  • ftp://exemplo.com
  • https://exemplo
  • https://exemplo .com
  • www.exemplo.com
  • https://.com

Como funciona, por partes

Armadilhas

Código pronto

JavaScript

const re = new RegExp("^(?:https?://(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d{2,5})?(?:/[^\\s]*)?)$");
console.log(re.test(texto.trim()));

Python

import re

re_url_http = re.compile(r"https?://(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}(?::[0-9]{2,5})?(?:/[^\s]*)?")
print(bool(re_url_http.fullmatch(texto.strip())))

C#

using System.Text.RegularExpressions;

var re = new Regex(@"^(?:https?://(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}(?::[0-9]{2,5})?(?:/[^\s]*)?)\z");
bool ok = re.IsMatch(texto.Trim());

Perguntas frequentes

Melhor usar new URL() ou regex?

Para validar uma URL isolada, new URL() é mais correto. O regex é melhor para achar URLs dentro de textos longos e para triagem rápida de formato.

Como aceitar só https?

Troque https? por https. Em formulários que enviam dados sensíveis, aceitar apenas https é uma boa regra.

O padrão funciona com URLs sem www?

Funciona. O www é só mais um rótulo de domínio; https://exemplo.com casa do mesmo jeito.

Como achar todas as URLs de um texto longo?

Use o padrão sem âncoras e com a flag g, e percorra os resultados com matchAll. Depois de cada ocorrência, retire pontuação final como ponto, vírgula e parêntese de fechamento, que o padrão pode ter incluído no caminho.

O padrão aceita parâmetros de consulta?

Aceita. Tudo o que vem depois da primeira barra e não é espaço entra no caminho, incluindo o ponto de interrogação, os parâmetros com e comercial e o fragmento depois do jogo da velha. O regex não separa essas partes; para isso, leia a URL com o objeto URL do JavaScript e use as propriedades pathname, searchParams e hash.

Como tratar links que o usuário digita sem o esquema?

Quando a pessoa digita só www.exemplo.com, o padrão recusa. Uma saída é acrescentar https:// na frente de textos que começam com www., e só então testar. Faça isso conscientemente: assumir https por conta própria pode apontar para um site sem certificado.

Ferramentas

← Ver todos os padrões