Regex Tester

Padrão Regex de URL: Validação de URL

Padrão regex para corresponder e válidar URLs HTTP/HTTPS com strings de consulta, fragmentos, portas e segmentos de caminho.

100% no navegador. Seus dados nunca saem do seu computador.

//gm
4 correspondências
https://example.com https://devbento.dev/tools/regex-tester http://localhost:3000/api/users?page=1&limit=10 https://sub.domain.example.co.uk/path/to/resource#section ftp://not-http.com not a url https://example.com/search?q=hello+world&lang=en
Detalhes da Correspondência

Ferramentas Relacionadas

Padrão Regex de URL

O padrão acima corresponde a URLs HTTP e HTTPS, incluindo caminhos, strings de consulta e fragmentos. Rejeita esquemas ftp:// e strings simples sem protocolo. Das strings de teste acima, corresponde a https://example.com, a URL da ferramenta devbento, a API localhost com parametros de consulta é a URL de subdomınio com fragmento. Não corresponde a ftp://not-http.com ou a string de texto simples.

Detalhamento do Padrão

SegmentoPadrãoO que corresponde
Protocolohttps?:\/\/http:// ou https://
Host[\w\-]+(\.[\w\-]+)+Nome de domınio com pelo menos um ponto (ex. example.com, sub.domain.co.uk)
Caminho, consulta, fragmento([\w.,@?^=%&:/~+#\-]*[\w@?^=%&/~+#\-])?Caminho opcional e string de consulta, não deve terminar em caractere de pontuação

A classe de caracteres final intencionalmente não e ancorada no final. A segunda classe de caracteres dentro do grupo ([\w@?^=%&/~+#\-]) garante que a correspondencia não pare em um ponto final ou vırgula final, evitando capturar pontuação que segue uma URL em prosa.

O Construtor URL como Alternativa de Validação

Para JavaScript, new URL(input) é a forma mais confiavel de verificar se uma string é uma URL absoluta válida:

function isValidUrl(str) {
  try {
    const url = new URL(str);
    return url.protocol === 'http:' || url.protocol === 'https:';
  } catch {
    return false;
  }
}

Issó lida com casos extremos que o regex não lida: endereços IPv6 (http://[::1]:8080/), nomês de domınio internacionalizados apos normalização Punycode e caracteres com codificação percentual em caminhos. A verificação de protocolo filtra javascript:, data: e outros esquemas que você provavelmente não quer aceitar.

Casos Extremos que o Padrão Não Cobre

URLs com credenciais de autenticação (http://user:pass@example.com) não são correspondidas porque o @ na parte de informações do usuario confunde a analise do host. URLs com endereços IPv6 (http://[2001:db8::1]/) exigem manipulação de colchetes que adiciona complexidade significativa. Nomês de domınio Unicode (https://münchen.de) devem primeiro ser convertidos para Punycode antes que o padrão os corresponda.

Para um sistema de produção que lida com URLs enviadas por usuarios, o padrão nesta página funciona bem como um primeiro filtro, mas passe os sobreviventes pelo construtor URL antes de armazenar ou buscar.

Extraindo URLs de Texto

O usó mais prático de um regex de URL e extrair links de logs, markdown ou texto simples. Ao fazer issó com a flag g, fique atento a dois problemas: a sintaxe de link markdown ([rótulo](https://url)) incluira o ) de fechamento na correspondencia, e atributos href HTML podem ter a URL envolvida em aspas. Uma etapa de pos-processamento para remover ), " ou ' finais cobre a maioria desses casos.

Se precisar codificar URLs antes de incorpora-las em HTML ou uma string de consulta, o Codificador de URL lida com a codificação percentual para você.