Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Ivan22

expressao regular para validar url

Recommended Posts

Ivan22

olá

alguém que conheça uma óptima expressão regular para validar url que funcione?

Share this post


Link to post
Share on other sites
mjamado

Essa do "que funcione" é que me partiu todo...

Eu costumo usar esta, nunca me falhou (para funções preg):

/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
Ivan22

hum.. testei uma validação invalida e ele passou..

$site="http://_:--çç       LL";


$resultado=(preg_match("/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i",$site) ? $site : false);


$resultado tem o valor do site(invalido)

Share this post


Link to post
Share on other sites
mjamado

Aposto contigo em como $resultado[0] tem um site válido (neste caso, "http://_:" - sim, isto é válido pela especificação)  ;)

Mas eu tinha lido mal, tu não queres "encontrar" url's (incluíndo ficheiros e tudo), queres validá-los. Esta que te dei é mais para encontrar em texto corrido.

Vê lá esta, que é mais restritiva:

/^https?:\/\/(www\.)?[-a-z0-9+]{2,128}\.[a-z]{2,4}(\.[a-z]{2,4})?(\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*)?$/i

Repara que na zona do TLD, o gajo aceita qualquer coisa que tenha entre 2 a 4 caracteres; se quiseres, podes ser bastante mais restritivo, apanhando apenas com 2 caracteres, que são os TLD de país ou TLD's específicos, como com, org, net, info, etc.

P.S.: e repara no ^ no início e $ no fim - é isto que diz que tu queres que a regex se verifique em toda a string e não em parte.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
Ivan22

tá muito fixe!

falta só umas pequenas validações, não te importas que editar?

1: na parte do www: seria opcional ou quando fosse omitido obrigatoriamente seria "www".

2: o underscore, não entra na validação. tinha de entrar quando ele tivesse no meio de dois caracteres: "a_b"

expressões regulares não percebo muito...

pesquiso na net a ver se as encontro.

encontrei uma excelente, para validação de mail, caso alguém precise:

/^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.