[ GuTo ] Postado Fevereiro 12, 2005 Denunciar Share Postado Fevereiro 12, 2005 Fala galera!Eu fiz uma função em ASP que eu considero perfeita para validar emails.Agora estou tentando transcreve-la pro JavaScript.Dae assim, tem uma parte desta função onde eu guardo num array, os caracteres que não são permitidos no email.Dae no ASP faço assim:Carac = Array("!","#","$","%","&","*","(",")","+","=","/","\","|","?","'","""","{","}","[","]","ª","º",":",",",";","§","°","<",">") E imagino que no javascript, só mude uma coisinha, o tal do new na frente. Assim: Carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\","|","?","'","""","{","}","[","]","ª","º",":",",",";","§","°","<",">")Mas parece não ficar correto no JS isso.Acho que a barra contrária/invertida (\) não poderia estar neste array.De qualquer forma, eu até cheguei a tira-la do array, mas permanece o erro.No IE q aponta os erros de JS, mostra um erro como se estivesse faltando fechar o parenteses ) do array.Alguém de vocês sabe o que pode ser? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Fevereiro 12, 2005 Denunciar Share Postado Fevereiro 12, 2005 Guto, é exatamente isso que você pensou, mesmo... só que no JS (acredito que no ASP seja diferente, pelo exemplo que você postou), a barra invertida serve pra escapar o caractere da frente. Então, como esse array é formado por strings, você delimita o valor de cada elemento com aspas... só que quando você faz isto: "\", ele interpreta que você abriu uma string e que o primeiro caractere dela é uma aspa dupla... e vai continuar interpretando que é uma string até encontrar uma aspa dupla sem barra de escape antes, sacou o motivo do erro no IE?O certo seria você escapar a barra invertida pra esse elemento: "\\"Tenta assim, acho que dará certo...Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 12, 2005 Autor Denunciar Share Postado Fevereiro 12, 2005 Isso mesmo Illidan! Mas tinha mais uma coisinha!Eu queria também retirar as aspas duplas, dae ficava assim: " "" "Saca? Dae dava erro!Então tirei e tá certo!Ae agora olha isso!email = "gutoasp@pop.com.br" Carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\\","|","?","'","{","}","[","]","ª","º",":",",",";","§","°","<",">") for(i=0; i<Carac.length; i++) if (email.indexOf(Carac(i),0) > 0) return falsequando chega nesta parte do loop, tá dando erro.Se puder me ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Fevereiro 12, 2005 Denunciar Share Postado Fevereiro 12, 2005 Claro... Bom, a função indexOf() retorna o índice da primeira ocorrência de um caractere (ou substring), ou retorna -1 caso ele não exista na string. Sendo assim:email = "gutoasp@pop.com.br"Carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\\","|","?","'","{","}","[","]","ª","º",":",",",";","§","°","<",">")for(i=0; i<Carac.length; i++) if (email.indexOf(Carac) != -1) return falseMas, cara... acho que essa função não vai validar de uma forma muito segura, não... pensa bem, e se o cara digitar algo como: aaa@aaaEntendeu? O ideal é você fazer essa validação com expressões regulares... eu tenho um exemplo com PHP. Vou adaptá-lo pra JS e depois posto aqui. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Fevereiro 12, 2005 Denunciar Share Postado Fevereiro 12, 2005 pra colocar aspas duplas use assim:"\"\"" ou '""' (aspas duplas dentro de aspas simples)e meio enrolado mas funciona Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 13, 2005 Autor Denunciar Share Postado Fevereiro 13, 2005 Illidan!No array, na hora ali de escrever o caracteres X, eu tava fazendo como no ASP, usando aspas... dae você me lembrou do ... tinha esquecido por um instante disso do JS. mbleonardo!quanto a aspas duplas, eu fiz dakele jeito: " \" " Agora confiram a minha função pra validar email, e mais junto a página pra poder testar:<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Validando email</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script language="JavaScript" type="text/javascript"> <!-- /* Funcao que valida o email Feito por Antonio Augusto André Silveira Mais conhecido como [ GuTo ] Data: 13/02/2005 04:45:00 Contato: Email: gutoasp@pop.com.br MSN: gutoasp@hotmail.com ICQ: 108662800 */ function validaEmail(email) { var pos, aux, pos2, dominio, carac, i email = email.toLowerCase() //gutoasp@pop.com.br if (email.indexOf("@",0) == -1 || email.length <= 10) return false pos = email.indexOf("@",0) //no ASP 8, JS 7 aux = email.substring(pos+1) //pop.com.br if (aux.indexOf(".",0) < 3) return false pos2 = aux.indexOf(".",0) dominio = aux.substr(0,pos2)//pop if (dominio.length < 3) return false carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\\","|","?","'","\"","{","}","[","]","ª","º",":",",",";","§","°","<",">") for(i=0; i<carac.length; i++) if (email.indexOf(carac[i],0) != -1) return false return true } function check() { var email = document.form.email.value if (validaEmail(email)) { alert("Válido") return true } else { alert("Inválido") return false } } // --> </script> </head> <body> <form name="form" onsubmit="return check();"> <input type="text" name="email" id="email"> <input type="submit"> </form> <script> var pos, aux, pos2, dominio, carac, i email = "GUTOASP@pop.com.br" document.write('<br>email= ' + email) email = email.toLowerCase() //gutoasp@pop.com.br //if (email.indexOf("@",0) == -1 || email.length <= 10) return false pos = email.indexOf("@",0) //no ASP 8, JS 7 aux = email.substring(pos+1) //pop.com.br //if (aux.indexOf(".",0) < 3) return false pos2 = aux.indexOf(".",0) dominio = aux.substr(0,pos2)//pop document.write('<br>email2= ' + email) document.write('<br>pos= ' + pos) document.write('<br>aux= ' + aux) document.write('<br>pos2= ' + pos2) document.write('<br>dom= ' + dominio) //if (dominio.length < 3) return false carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\\","|","?","'","\"","{","}","[","]","ª","º",":",",",";","§","°","<",">") for(i=0; i<carac.length; i++) document.write('<br>'+carac[i]) // if (email.indexOf(carac[i],0) != -1) return false </script> </body> </html>Só passa um email, esteticamente correto, do tipo: aaa@aaa.comSe alguém tiver alguma sugestão pra melhorar a função, sou todo "ouvidos, ou melhor, "olhos".. heheheAté mais,Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 13, 2005 Autor Denunciar Share Postado Fevereiro 13, 2005 up! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 14, 2005 Autor Denunciar Share Postado Fevereiro 14, 2005 up! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Crystian Postado Fevereiro 14, 2005 Denunciar Share Postado Fevereiro 14, 2005 ' date='Feb 14 2005, 10:12 AM'] up! qual a tua dúvida? quer q agente teste? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 14, 2005 Autor Denunciar Share Postado Fevereiro 14, 2005 Só queria saber se vocês sabem tem algo a mais a acrescentar neste função que fiz?Pois, como o Illidan falou antes, um email como este: aaa@aaa.aaapassa pela verificao!Como este: aaa@bbb.br passaria também!Então, qual é a sugestão que dariam pra melhorar a função?Eu tinha pensado em fazer assim: pegar o user do email e o dominio do email, no caso de aaa@bbb.com, seriam:- usuario: aaa- dominio: bbbSe eles forem iguais, seria inválido.Mas não podemos fazer este, pois existe diversos emails assim: scriptbrasil@scriptbrasil.comEntão... não sei o que mais poderia validar!Dae por isso, peço a sugestão de vocês para a melhora desta função que criei, que estou até disponibilizando pra vocês usarem aonde quiserem, desde que mantenham ela do jeito q está e os meus créditos nela. beleza? Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Fevereiro 14, 2005 Denunciar Share Postado Fevereiro 14, 2005 Guto,Aquilo que eu falei (que ela deixaria passar um "aaa@aaa") foi porque eu acreditava que a sua função era baseada naquele array e naquele laço, entende? Se você quer validar se um e-mail existe de verdade (checando usuário e server), só vi um código até hoje que fazia isso... escrito em PHP. Mas não estou conseguindo acessar... bom, se você se interessar, o site é http://www.phpclasses.com. você encontra esse código no usuário Manuel Lemos.Com javascript somente, seria impossível você validar se um e-mail existe de verdade... o máximo que você vai poder validar é se o padrão de caracteres digitados no campo de e-mail é compatível com o padrão de um e-mail válido. Isso você pode fazer com expressões regulares... mas, de qualquer forma, uma função assim ainda deixaria passar um aaa@aaa.com :/[]'s! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 14, 2005 Autor Denunciar Share Postado Fevereiro 14, 2005 Então Illidan, imagino que minha função, apesar de maior que uma expressão regular, expressa com outras palavras a mesma coisa, valida o máximo possível um email, certo?Acho que o máximo que ela pode fazer!Se tu tiveres alguma idéia a mais, por favor, contribua! E se possível, mostre sua expressão regular pra eu testar! Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Fevereiro 14, 2005 Denunciar Share Postado Fevereiro 14, 2005 Guto,Aqui está a minha função com expressões regulares: /** * validate email strings * * @author: Carlos Reche * @email: carlosreche@yahoo.com */ function validateEmail(email) { if (typeof(email) != "string") return false; else if (!email.match(/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\.[A-Za-z0-9]{2,4}$/)) return false; return true; }E aqui está um código pronto pra testá-la:<html> <head> <title>Validate e-mail</title> <script type="text/javascript"> /** * validate email strings * * @author: Carlos Reche * @email: carlosreche@yahoo.com */ function validateEmail(email) { if (typeof(email) != "string") return false; else if (!email.match(/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\.[A-Za-z0-9]{2,4}$/)) return false; return true; } function checkEmail(obj) { var message = (validateEmail(obj.value)) ? "Valid!" : "Invalid!"; document.getElementById("message").innerHTML = message; } </script> </head> <body style="text-align: center; padding: 150px 0px; font-size: 20px;"> E-mail: <input type="text" name="email" id="email" onkeyup="checkEmail(this);" /> <div id="message" style="margin: 20px auto; font-size: 17px; font-weight: bold; color: #c00;"></div> </body></html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 17, 2005 Autor Denunciar Share Postado Fevereiro 17, 2005 Grande Illidan!Mas brother, fiz uns testes nesta função em Regular Expression, e ela deixa vazar uns emails bem bobos. Um deles é a@a.coA minha eu melhorei e acho que agora ficou bem melhor.É grandinha, mas valida legal. Tem 18 linhas.Agora eu vou transcrevê-la pro ASP. Regular Expression eu nunca estudei.Uma hora eu até pego pra dar uma olhada.Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Fevereiro 17, 2005 Autor Denunciar Share Postado Fevereiro 17, 2005 Opa, e ae pessoal!Sei que sou chato quanto a pequenas coisas, mas como já falei em diversos tópicos, eu tenho mania de perfeitção, querer tudo certinho.Então,pergunto-lhes: Qual foi o maior email que vocês já viram?Quero dizer, o máximo de caracteres num email q vocês já viram.Ex.: contato@ulbra.br -> Contém 17 caracteres.E também, o maior número caracteres de um user num email vocês já viram.Ex.: gutoasp@pop.com.brUser: gutoasp -> 7 caracteres.Agora porque quero saber disso?Para tornar a função que valida o email ainda melhor.A maioria dos servidor dizem que o email deve ter no mínimo 4 ou 6 caracteres e no máximo 15, mas alguns server acho q permitem até 20, acho q não mais.Então é isso, por favor ajudem nesta pesquisa! Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Fevereiro 1, 2007 Denunciar Share Postado Fevereiro 1, 2007 o Velho checa se o host do email existe, entre a @ e o . :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
[ GuTo ]
Fala galera!
Eu fiz uma função em ASP que eu considero perfeita para validar emails.
Agora estou tentando transcreve-la pro JavaScript.
Dae assim, tem uma parte desta função onde eu guardo num array, os caracteres que não são permitidos no email.
Dae no ASP faço assim:
E imagino que no javascript, só mude uma coisinha, o tal do new na frente. Assim:Mas parece não ficar correto no JS isso.
Acho que a barra contrária/invertida (\) não poderia estar neste array.
De qualquer forma, eu até cheguei a tira-la do array, mas permanece o erro.
No IE q aponta os erros de JS, mostra um erro como se estivesse faltando fechar o parenteses ) do array.
Alguém de vocês sabe o que pode ser?
Link para o comentário
Compartilhar em outros sites
15 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.