Página 1 de 2

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

Enviado: 08 Abr 2011 12:14
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

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

Enviado: 08 Abr 2011 16:45
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.

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

Enviado: 08 Abr 2011 18:37
por Maligno

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

Enviado: 09 Abr 2011 20:52
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.

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

Enviado: 11 Abr 2011 10:43
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 ?

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

Enviado: 11 Abr 2011 10:54
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.

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

Enviado: 11 Abr 2011 11:28
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

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

Enviado: 11 Abr 2011 11:32
por Pablo César
Leonardo, esse mesmo exemplo está incluso no link do tópico que passei...

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

Enviado: 11 Abr 2011 11:36
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...

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

Enviado: 11 Abr 2011 11:54
por sygecom
Verdade, não havia notado o link, beleza então. Abraços

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

Enviado: 11 Abr 2011 12:00
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.

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

Enviado: 06 Abr 2013 15:09
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


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

Enviado: 08 Abr 2013 07:33
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.

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

Enviado: 08 Abr 2013 13:19
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


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

Enviado: 08 Abr 2013 13:57
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.