Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ivan22

expressao regular para validar url

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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}$/

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.