Página 1 de 1

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 13:25
por Itamar M. Lins Jr.
Olá!
Alguém tem e pode disponibilizar a validação do email ?

Código: Selecionar todos

@ 030,250 get oEmail var cEMAIL Size 400,25 Style ES_LOWERCASE
@ 030,320 get oWhatsApp var cWhatsApp Picture "@R (99) 99999-9999" Size 180,25 
Em VBA:
Imagem

Código: Selecionar todos

Function IsEmailValid(strEmail)
    Dim strArray As Variant
    Dim strItem As Variant
    Dim i As Long, c As String, blnIsItValid As Boolean
    blnIsItValid = True
     
    i = Len(strEmail) - Len(Application.Substitute(strEmail, "@", ""))
    If i  1 Then IsEmailValid = False: Exit Function
    ReDim strArray(1 To 2)
    strArray(1) = Left(strEmail, InStr(1, strEmail, "@", 1) - 1)
    strArray(2) = Application.Substitute(Right(strEmail, Len(strEmail) - Len(strArray(1))), "@", "")
    For Each strItem In strArray
        If Len(strItem) <= 0 Then
            blnIsItValid = False
            IsEmailValid = blnIsItValid
            Exit Function
        End If
        For i = 1 To Len(strItem)
            c = LCase(Mid(strItem, i, 1))
            If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) Then
                blnIsItValid = False
                IsEmailValid = blnIsItValid
                Exit Function
            End If
        Next i
        If Left(strItem, 1) = "." Or Right(strItem, 1) = "." Then
            blnIsItValid = False
            IsEmailValid = blnIsItValid
            Exit Function
        End If
    Next strItem
    If InStr(strArray(2), ".") <= 0 Then
        blnIsItValid = False
        IsEmailValid = blnIsItValid
        Exit Function
    End If
    i = Len(strArray(2)) - InStrRev(strArray(2), ".")
    If i  2 And i  3 Then
        blnIsItValid = False
        IsEmailValid = blnIsItValid
        Exit Function
    End If
    If InStr(strEmail, "..") > 0 Then
        blnIsItValid = False
        IsEmailValid = blnIsItValid
        Exit Function
    End If
    IsEmailValid = blnIsItValid
End Function
Saudações,
Itamar M. Lins Jr.

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 14:58
por JoséQuintas
Tô estranhando um da lista que está mostrando como falso.
A princípio, uma validação simples pra essa lista:

Código: Selecionar todos

FUNCTION Valida( cEmail )

LOCAL lValid := .F.

cEmail := Trim( cEmail )
DO CASE
CASE ! "@" $ cEmail
CASE ! "." $ cEmail
CASE " " $ cEmail
CASE ".." $ cEmail
OTHERWISE
   lValid := .T.
ENDCASE
RETURN lValid
No VB, InStr() equivale a At(), é testar se tem o texto/letra em outra string, e Mid() equivale a Substr()
Aí no VBA tá testando se começa com "." ou termina com ".", se tem caracteres fora da lista de caracteres válidos, se tem "..", talvez testar se tem mais de um "@".
Pelo menos pra essa lista, já vai dar um retorno bom.

só não entendi porque tes@gmail.com mostra como verdadeiro e falso ao mesmo tempo, exceto o que tem espaço.
Ou talvez porque está repetido, e é inválido por isso, apenas a mensagem de falso é que não ficou boa.

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 15:17
por Itamar M. Lins Jr.
Olá!
Não pode "#$%" entre outros, mais fácil validar somente o que é permitido.

Código: Selecionar todos

If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) Then
E os pontos só pode 1 ou 2. E outros detalhes que não lembro agora.

Saudações,
Itamar M. Lins Jr.

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 15:19
por Itamar M. Lins Jr.
Olá!
O Harbour aceita "Expressões regulares"!. Não sei como usar.
JavaScript.

Código: Selecionar todos

function IsEmail(email){
    var exclude=/[^@-.w]|^[_@.-]|[._-]{2}|[@.]{2}|(@)[^@]*1/;
    var check=/@[w-]+./;
    var checkend=/.[a-zA-Z]{2,3}$/;
    if(((email.search(exclude) != -1)||(email.search(check)) == -1)||(email.search(checkend) == -1)){return false;}
    else {return true;}
}
Saudações,
Itamar M. Lins Jr.

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 15:22
por sygecom
Uso atualmente assim:

Código: Selecionar todos

*****************************************
STATIC FUNCTION EMAIL_VALIDO2(cMAIL_TEMP)
*****************************************
Local oRegEx, bVal
TRY
   oRegEx := Createobject("VBScript.RegExp")
CATCH
   RETURN .T.
END
oRegEx:Pattern :="^[\w-\.]{1,}\@([\da-zA-Z-_]{1,}\.){1,}[\da-zA-Z-_]{2,4}$"
cMAIL_TEMP := ALLTRIM(cMAIL_TEMP)
bVal := oRegEx:Test(cMAIL_TEMP)
Release oRegEx

Return bVal

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 15:33
por Itamar M. Lins Jr.
Olá!
Achei aqui no forum mesmo.

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 HB_REGEXLIKE( cRegEx, Rtrim( cEMail ) ) //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
Mas ainda não está completo.

Saudações,
Itamar M. Lins Jr.

Picture/validação para Email/WhatsApp

Enviado: 05 Nov 2020 15:48
por Itamar M. Lins Jr.
Olá!
Mais outro aqui:

Código: Selecionar todos


FUNCTION Main()

LOCAL cVar   := "prueba@correo.com"
LOCAL cRegex := "^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$" //"/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/"
LOCAL pRegex := hb_RegExComp( cRegex,.T.,.T. )

?lIsReges:=hb_IsRegex(pRegex)
aArr:=hb_RegEx(pRegex,cVar,.T.,.T.)
?lLike:=hb_RegExLike( pRegEx, cVar,.T.,.T. )
?lHas:=hb_RegExHas( pRegEx, cVar,.T.,.T. )

RETURN NIL
Saudações,
Itamar M. Lins Jr.