Como o padrão funciona
| Parte | Significado |
|---|---|
^https? | Começa com http, seguido opcionalmente de s |
:\/\/ | O literal :// (barras escapadas para regex literais em JavaScript) |
[A-Za-z0-9.-]+ | Nome do host e subdomínios |
\.[A-Za-z]{2,} | Um ponto e um domínio de nível superior com duas ou mais letras |
(?::\d{1,5})? | Uma porta opcional, como :8080 |
(?:\/[^\s]*)? | Um caminho, query string e fragmento opcionais — qualquer coisa até um espaço em branco |
$ | Fim da string |
Exemplos 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;
Observações e limitações
Para validação em JavaScript, new URL(value) dentro de um try/catch é mais rigoroso e cobre todos os casos extremos; use a regex quando também quiser exigir http(s) e um domínio com cara de público. Ela rejeita localhost e endereços IP soltos de propósito.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.