Jump to content


Photo

[Ajuda] Expressoes Regulares


  • Faça o login para participar
1 reply to this topic

#1 laudos

laudos

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:joao pessoa

Posted 02/09/2011, 23:10

estou com um problema na minha expressao regular...

if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email2)){

{echo "<script>alert('Digite o E-MAIL CORRETAMENTE !!!');history.back();</script>"; die();}
}

onde não está aceitando o os e-mails tipo: junior-jp@hotmail.com ou seja "-" o traço nao esta validando...

#2 Fábio Luciano

Fábio Luciano

    Ativo

  • Usuários
  • 309 posts
  • Sexo:Masculino
  • Localidade:Santa Maria / DF
  • Interesses:Ah eu gosto de tudo :D

Posted 07/09/2011, 04:39

Cara,

seu regex está completamente errado!

Primeiro de tudo. o que você estava tentando obter quando colocou vírgulas dentro da lista? Coisas como [0-9,a-z,A-Z], não estão erradas, mas vão te dar um resultado completamente diferente do que você está esperando. O que você está dizendo nesse pequeno átomo do regex é nesse átomo, você aceita letras maiúsculas e minúsculas, números e a vírgula, que você colocou repetidas vezes e que de acordo com a RFC2882, vírgulas não são permitidas. Porém, do jeito que você está fazendo, o correto a se fazer seria:

[a-zA-Z0-9]

E melhor ainda:

[:alnum:]

D6e uma lida na parte Dominando caracteres acentuados do guia-er e você vai entender mais

Seja um cara inteligente e não reinvente a roda. Ou você acha mesmo que nunca ninguém quis validar um e-mail?

Nessa página, você tem a expressão regular perfeita para validar e-mail, respeitando aquela RFC que citei anteriormente, a primeira vista é uma tripona, mas se você quer aprender como funciona, é só ler átomo por átomo, da esquerda pra direita.
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
(cuidado ao copiar, o fórum está dando quebras de linha)

Outra dica que lhe dou é parar de usar a função ereg. Use a função preg_match. O ereg, além de deprecated, é lenta pra dedeu.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq