A programação tornou fácil lidar com dados textuais estruturados e não estruturados. Ferramentas como expressões regulares e bibliotecas externas facilitam muito essas tarefas.
Você pode usar a maioria das linguagens, incluindo Python e JavaScript, para validar URLs usando uma expressão regular. Este exemplo de regex não é perfeito, mas você pode usá-lo para verificar URLs para casos de uso simples.
Uma expressão regular para validar um URL
A regex para validar uma URL apresentada neste artigo não é perfeita. Pode haver vários exemplos de URLs válidos que podem falhar nessa validação de regex. Isso inclui URLs envolvendo endereços IP, caracteres não ASCII e protocolos como FTP. O regex a seguir valida apenas as URLs mais comuns.
A regex considerará uma URL válida se atender às seguintes condições:
- A string deve começar com http ou https seguido pela ://.
- O comprimento combinado do subdomínio e do domínio deve estar entre 2 e 256. Deve conter apenas caracteres alfanuméricos e/ou caracteres especiais.
- O TLD (Top-Level Domain) deve conter apenas caracteres alfabéticos e deve ter entre dois e seis caracteres.
- O final da string de URL pode conter caracteres alfanuméricos e/ou caracteres especiais. E pode repetir zero ou mais vezes.
Você pode validar uma URL em JavaScript usando a seguinte expressão regular:
^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
Da mesma forma, você pode usar o seguinte regex para validar um URL em Python:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Onde:
- (http|https)://) garante que a string comece com http ou https seguido por ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] indica caracteres alfanuméricos e/ou caracteres especiais. A primeira instância desse conjunto representa o conjunto de caracteres a serem permitidos no subdomínio e na parte do domínio. Enquanto a segunda instância desse conjunto representa o conjunto de caracteres a serem permitidos na string de consulta ou na parte do subdiretório.
- {2,256} representa 2 a 256 (ambos inclusive) vezes o indicador de ocorrência. Isso indica que o comprimento combinado do subdomínio e do domínio deve estar entre dois e 256.
- \. representa o caractere de ponto.
- [a-z]{2,6} significa quaisquer letras minúsculas de a a z com um comprimento entre dois e seis. Isso representa o conjunto de caracteres a serem permitidos na parte do domínio de nível superior.
- \b representa o limite de uma palavra, ou seja, o início de uma palavra ou o fim de uma.
- * é um operador de repetição que indica zero ou mais cópias da string de consulta, parâmetros ou subdiretórios.
- ^ e $ indicam o início e o fim da string, respectivamente.
Se você se sentir desconfortável com a expressão acima, confira um guia para iniciantes sobre expressões regulares primeiro. As expressões regulares levam algum tempo para se acostumar. Explorando alguns exemplos como validando detalhes da conta do usuário usando expressões regulares deve ajudar.
O regex acima satisfaz os seguintes tipos de URLs:
- https://www.something.com/
- http://www.something.com/
- https://www.something.edu.co.in
- http://www.url-with-path.com/path
- https://www.url-with-querystring.com/?url=has-querystring
- http://url-without-www-subdomain.com/
- https://mail.google.com
Usando a expressão regular em um programa
O código utilizado neste projeto está disponível em um Repositório GitHub e é gratuito para você usar sob a licença do MIT.
Esta é uma abordagem Python para validar um URL:
importar ré
defvalidarURL(url):
regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)se (ré.procurar(r, url)):
imprimir("Válido")
outro:
imprimir("Inválido")
url1 = "https://www.linkedin.com/"
validarURL(url1)
url2 = "http://apple"
validarURL(url2)
url3 = "iywegfuykegf"
validarURL(url3)
url4 = "https://w"
validarURL(url4)
Este código usa Python re.compile() para compilar o padrão de expressão regular. Este método aceita o padrão regex como um parâmetro de string e retorna um objeto de padrão regex. Este objeto de padrão regex é ainda usado para procurar ocorrências do padrão regex dentro da string de destino usando o pesquisar() método.
Se encontrar pelo menos uma correspondência, o pesquisar() O método retorna a primeira correspondência. Observe que, se você quiser pesquisar todas as correspondências com o padrão da string de destino, precisará usar o re.encontrar() método.
A execução do código acima confirmará que a primeira URL é válida, mas as demais não.
Da mesma forma, você pode validar uma URL em JavaScript usando o seguinte código:
funçãovalidarURL(url) {
se(/^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (url)) {
console.log('Válido');
} outro {
console.log('Inválido');
}
}
validarURL("https://www.linkedin.com/");
validarURL("http://apple");
validarURL("iywegfuykegf");
validarURL("https://w");
Novamente, a execução desse código confirmará que a primeira URL é válida e as demais são inválidas. Ele usa JavaScript corresponder() para corresponder a string de destino a um padrão de expressão regular.
Validar dados importantes usando expressões regulares
Você pode usar expressões regulares para pesquisar, corresponder ou analisar texto. Eles também são usados para processamento de linguagem natural, correspondência de padrões e análise léxica.
Você pode usar essa ferramenta poderosa para validar tipos importantes de dados, como números de cartão de crédito, detalhes da conta do usuário, endereços IP e muito mais.