Testador de Padrão de Rota (Express)
Testa uma URL contra padrões de rota estilo Express (/users/:id), mostra qual casa primeiro, os parâmetros extraídos e conflitos entre rotas.
Aceita :param, :param?, :param(\d+) e * no fim para o resto do caminho. A query string é separada e não participa do match.
Resultado
Todos os padrões que casam
Conflitos
Regex gerada
Como o router escolhe a rota
O Express percorre a pilha na ordem de registro e para no primeiro padrão cuja regex casa com o pathname. Um /users/:id genérico declarado antes de /users/me engole a rota literal, e nenhum erro aparece — o segundo handler simplesmente nunca roda. Por isso o bloco de ordem marca os padrões sombreados.
Parâmetros sempre capturam um único segmento, então :id nunca atravessa uma barra — /files/a/b precisa de um curinga no fim. Os valores chegam percent-encoded e o Express decodifica, por isso café aparece como caf%C3%A9 na coluna do valor cru. Tudo aqui roda no seu navegador; nenhum padrão ou URL é enviado para lugar nenhum.
Por que sua rota Express não está batendo
Cole os padrões na mesma ordem em que eles aparecem no seu arquivo de rotas e o teste responde à pergunta que interessa: qual handler o Express chamaria para esta URL. Um app com /users/:id registrado na linha 12 e /users/me na linha 30 nunca chega na segunda rota, porque o parâmetro engole a palavra me e o id acaba valendo a string me dentro do handler. O bloco de ordem marca essa sombra linha por linha.
Cada padrão vira uma regex ancorada, montada segmento a segmento. O :id captura um único trecho entre barras, então /files/a/b só casa com um curinga no fim; o :cid? deixa o segmento inteiro opcional, e não apenas o valor; e o :id(\d+) troca o grupo genérico pela regex que você escreveu. Colando a URL completa, a query fica fora do match e aparece separada, que é o que o router faz de verdade.
O detalhe que costuma atrapalhar o debug é o encoding. O valor chega percent-encoded e só é decodificado depois de casar, então /busca/caf%C3%A9 preenche req.params com café, enquanto uma sequência quebrada como %ZZ derruba o decodeURIComponent com URIError em vez de devolver 404. O Express, por padrão, ignora maiúsculas e trata /a e /a/ como a mesma rota, e os dois interruptores acima reproduzem esse comportamento.
Perguntas frequentes
Serve para Fastify, Koa ou React Router?
Por que minha rota literal nunca executa?
Quantos segmentos o curinga captura?
Ferramentas Relacionadas
Testador de Range SemVer
Testa quais versões satisfazem um range semver (^1.2.3, ~2.0, >=1 <2) e explica o intervalo em limite inferior e superior.
Testador de Regex
Teste expressões regulares em tempo real. Veja os matches destacados e os grupos capturados.
OAuth2 Authorization URL Builder
Monta URL de autorização OAuth 2.0 com response_type, client_id, redirect_uri, scope, state.