Função para validar string de endereço de e-mail

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Função para validar string de endereço de e-mail

Mensagem por alxsts »

Olá!

Foi testada com xHarbour.

Código: Selecionar todos

// The example uses a regular expression to detect if a character
// string is a valid eMail address.

   PROCEDURE Main

      Local cRegEx := "\b[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9][!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9\.]*[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9]@[a-zA-Z0-9\-][a-zA-Z0-9\-\.]+[a-zA-Z0-9\-]\b"
      LOCAL cEMail, GetList := {}

      SetMode( 24,80)

      CLS

      cEmail := Space( 250 )

      WHILE LastKey() != 27

         @ 10, 10 Say "Endereco de e-mail:" Get cEmail PICT "@S30"
         READ

         IF RTrim( cEMail ) LIKE cRegEx
            DispOutAt( 12,10, PadR( RTrim( cEMail ) + " ==> valido", 79 ) )
         ELSE
            DispOutAt( 12,10, PadR( RTrim( cEMail ) + " ==> invalido", 79 ) )
         ENDIF
      ENDDO
   RETURN
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função para validar string de endereço de e-mail

Mensagem por Pablo César »

Oi Alexandre, obrigado por compartilhar esse código, aliás percebí que tem similaridade com o exemplo que tem no help do xHarbour.

Pela razão de não poder usar o operador de referência LIKE em Harbour, que foi utilizado na linha 20 do seu código, será que poderia ser substituído por: IF HB_REGEXLIKE( cRegEx, RTrim(cEMail) ) ?

No entanto eu sou a favor de que seja implementado uma nova picture no GETSYS e que permita a digitação de caracteres minúsculos e somente os caracteres de email. Isso evitaria a digitação desnecessária de caracteres não válidos para emails durante a validação.

Permita-me colega Alexandre fazer menção deste tópico que também aborda sobre este assunto, assim quem achar este tópico consiguirá mais informações a respeito de validação de endereços de emails.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Função para validar string de endereço de e-mail

Mensagem por Maligno »

[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Função para validar string de endereço de e-mail

Mensagem por alxsts »

Olá!

Não pensei que este tópico fosse tomar este rumo. Mas foi bom. Além da parte humorística, estamos juntando informações, antes dispersas, e levantando novas situações.
Pablo César escreveu:percebí que tem similaridade com o exemplo que tem no help do xHarbour
O código que postei foi inspirado naquele exemplo. No entanto, a expressão regular lá apresentada, deixa passar um endereço que começa com um ponto.
Pablo César escreveu:fazer menção deste tópico que também aborda sobre este assunto...
Muito boa esta iniciativa. Eu não tinha visto este tópico. Bom que ficou junto a outro relacionado porém diferente. Testei a expressão regular daquele exemplo e também parece falhar. Ex: "teste.1.@teste.com". Creio que isto não seja válido...
Pablo César escreveu:será que poderia ser substituído por: IF HB_REGEXLIKE( cRegEx, RTrim(cEMail) ) ?
Fiz isto

Código: Selecionar todos

//IF RTrim( cEMail ) LIKE cRegEx
IF HB_REGEXLIKE( cRegEx, RTrim(cEMail) ) 
e compilei com o Harbour que tenho aqui, que acompanha a MiniGui (Harbour MiniGUI 1.9 Extended Edition (Build 91) - 2010.12.15 = Harbour 2.1.0beta3 (Rev. 15953)). Ao executar, a tela não aparece. Ao tentar recompilar, recebia mensagens de que o executável já estava rodando. Descobri depois que, após compilar, o executável é lançado como um serviço! Aparece no Gerenciador de Tarefas e tudo... Essa eu não entendi. Alguma luz?

Grato ao Maligno pela participação.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função para validar string de endereço de e-mail

Mensagem por Pablo César »

Obrigado caro colega Alexandre pela tua recepção e comprensão sobre o tema, agradeço mesmo. Acho que todos temos a ganhar enriquecendo de idéias e novas técnicas, por isso hoje o fórum é um sucesso,pois conta com uma grande fonte de informações e de valiosos profissionais como você que visam em ajudar aos outros.

Sobre a compilação do seu exemplo, (agora fugindo um pouquinho do tema pricipal) eu també fiz isso, compilei através da IDE da HMG. Mas com a opção de compilação (na aba configuração ou configuration quando estiver em inglês) de "console mode" para .T. Daí isto irá gerar um executável não para ambiente gráfico. Foi isso que deve ter acontecido com você. Tente outra vez mudando para verdadeiro nessa opção da IDE da HMG, ok ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Função para validar string de endereço de e-mail

Mensagem por alxsts »

Olá!

Caro Pablo, deve ser isto mesmo. Eu compilei "na mão" com C:\MiniGui\Batch\Compile.bat e não informei o parâmetro /C. Obrigado.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Função para validar string de endereço de e-mail

Mensagem por sygecom »

Outro exemplo. Acho que foi o Luiz Basso que me passou:

Código: Selecionar todos

****************************
FUNCTION EMIAL_VALIDO(cmail)
****************************
Local oRegEx, bVal
TRY
   oRegEx := Createobject("VBScript.RegExp")
CATCH error
   RETURN .T.
END
oRegEx:Pattern :="^[\w-\.]{1,}\@([\da-zA-Z-_]{1,}\.){1,}[\da-zA-Z-_]{2,3}$"
cmail := ALLTRIM(cmail)
bVal := oRegEx:Test(cMail)
Release oRegEx
Return bVal
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função para validar string de endereço de e-mail

Mensagem por Pablo César »

Leonardo, esse mesmo exemplo está incluso no link do tópico que passei...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Função para validar string de endereço de e-mail

Mensagem por alxsts »

Olá!

Leonardo:
este exemplo é o que consta no tópico referenciado acima pelo Pablo. Testei e observei o descrito também acima:
alxsts escreveu:Testei a expressão regular daquele exemplo e também parece falhar. Ex: "teste.1.@teste.com". Creio que isto não seja válido...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Função para validar string de endereço de e-mail

Mensagem por sygecom »

Verdade, não havia notado o link, beleza então. Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função para validar string de endereço de e-mail

Mensagem por Pablo César »

Verdade, não havia notado o link, beleza então. Abraços
kkkk ahhh Leonardo, você sempre tão rápido no gatilho que as vezes não lê direito... rsrs mas é bem vindo sempre os seus código/exemplos.
Alexandre escreveu:Testei a expressão regular daquele exemplo e também parece falhar. Ex: "teste.1.@teste.com". Creio que isto não seja válido...
Pois é... ja tinha visto isto também e esse ponto a mais não é permitido como email válido. Por isso da necessidade de implementar mais verificações. Mas acho que com ajuda de todos podemos elaborar um código verificador bom para endereços de emails.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Função para validar string de endereço de e-mail

Mensagem por lugab »

Amigos,

Alguém q usa o HARBOUR , substituiu a linha de código abaixo por qual ?

Código: Selecionar todos

IF RTrim( cEMail ) LIKE cRegEx

lugab
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Função para validar string de endereço de e-mail

Mensagem por Jairo Maia »

Olá lugab,

Esta resposta está nos posts mais acima, veja:

Código: Selecionar todos

IF HB_REGEXLIKE( cRegEx, Rtrim( cEMail ) )
Esta função apenas verifica se existe caracteres inválidos no email, e não se o email é válido. Por exemplo se digitar o email nada@nada ele dá como válido.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Função para validar string de endereço de e-mail

Mensagem por lugab »

Oi Jairo, bom dia

Eu uso o Harbour 2.0 e ja havia testado este código

Código: Selecionar todos

IF HB_REGEXLIKE( cRegEx, Rtrim( cEMail ) )
Achei q estava errado, por q ele apresentou os erros abaixo, na compilação

Código: Selecionar todos

Error: Unresolved external '_pcre_config' referenced from C:\HB20\LIB\HBRTL.LIB|hbregex
Error: Unresolved external '_pcre_stack_malloc' referenced from C:\HB20\LIB\HBRTL.LIB|hbregex
Error: Unresolved external '_pcre_stack_free' referenced from C:\HB20\LIB\HBRTL.LIB|hbregex

** error 2 ** deleting all

lugab
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Função para validar string de endereço de e-mail

Mensagem por Jairo Maia »

Olá lugab,

Você precisa incluir a lib hbpcre.lib. Se ainda assim der algum erro, também inclua a lib xhb.lib.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder