"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso melhorar minha expressão regular para corresponder URLs de maneira mais eficaz?

Como posso melhorar minha expressão regular para corresponder URLs de maneira mais eficaz?

Publicado em 2024-12-14
Navegar:433

How Can I Improve My Regular Expression to Match URLs More Effectively?

Expressão regular aprimorada para URLs correspondentes

Ao tentar detectar e analisar URLs a partir da entrada do usuário, é crucial usar uma expressão regular eficaz. No seu caso, embora sua expressão atual capture alguns formatos de URL, ela não leva em conta URLs que não possuem um esquema de protocolo explícito, como www.google.com.

Expressão regular revisada

Para resolver esse problema e garantir uma correspondência abrangente de URL, considere usar o seguinte código regular revisado expressão:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

Anatomia do Regex

  • Âncoras: Garante que a partida comece e termina a string inteira.
  • Protocolo (opcional): captura o protocolo opcional "http" ou "https" esquema.
  • Domínio: corresponde ao nome do domínio, incluindo subdomínios e domínio de nível superior.
  • Porta: captura o número da porta opcional (por exemplo, , ":8080").
  • Path: captura qualquer informação de caminho após o domínio (por exemplo, "/index.html").
  • Query: captura os parâmetros da string de consulta (por exemplo, "?name=John").
  • Fragment: captura o identificador do fragmento (por exemplo, "#footer").

Esta expressão regular revisada é menos restritiva e corresponderá com sucesso a URLs como www.google.com, bem como aqueles com protocolos explícitos (por exemplo, http://www.stackoverflow.com).

Exemplo de implementação (JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3