domingo, 30 de novembro de 2014

Regex para validar URL

Como você faria para validar uma URL ? Na verdade, você sabe o que é uma URL ? Então para você que não sabe, URL é a sigla para Uniform Resource Locator e consiste em um endereço de um recurso disponível em uma rede.

A estrutura de uma URL é:

esquema://domínio:porta/caminho/recurso?querystring#fragmento

Agora que você já sabe o que é uma URL, voltamos à primeira pergunta: Como você faria para validar uma URL ?

Para responder à essa pergunta, você pode adotar duas abordagens. A primeira é: construir funções gigantescas e a segunda: construir uma regex.

A validação a qual, estou abordando, é de estrutura. Não há nenhuma questão semântica (de significado) por trás. Então, mãos à massa.

Em primeiro lugar, é importante ressaltar que eu não criei esta regex. Peguei ela do livro abaixo.


Este livro não é caro e é muito bom. Recomendo à todos.

Realizei algumas modificações e melhorias na regex. Pus ela para aceitar URLs de ftp e aceitar endereços que comecem sem o esquema. Segue abaixo.

 ((https?:\/\/)|(ftp:\/\/)|(^))([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+([a-zA-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@~]*)  

Vamos aplicar a regex no nosso código.

 function validarURL(url){  
      if(/((https?:\/\/)|(ftp:\/\/)|(^))([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+([a-zA-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@~]*)/.test(url)){  
           alert('Formato correto !');  
      } else {  
           alert('Formato incorreto !');  
      }  
 }  

Pronto !! Em poucas linhas já possuímos algo funcional. A função acima foi escrita em Javascript.

Dicas ? Sugestões ? Críticas ? Deixe aí nos comentários.

Referência:

http://pt.wikipedia.org/wiki/URL

Nenhum comentário: