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...

[Ajuda] Expressoes Regulares
Started By laudos, 02/09/2011, 23:10
1 reply to this topic
#1
Posted 02/09/2011, 23:10
#2
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:
E melhor ainda:
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.
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.
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)