Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

RegExp para validar Email
#1

Hola a todos.

Gambas 3.17.2
Componente: gb.pcre
Clase: RegExp

En la ayuda del componente gb.pcre, clase RegExp colocan un ejemplo de expresión regular para validar los formatos de email:

(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b

Con la expresión regular anterior, estoy intentando validar el texto de un objeto WebTextBox asi:
GAMBAS
  1.    If Not RegExp.Match(WebTxt_Email.Text, "(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b") Then
  2.      WFrmMensajesX.MostrarMensajes("ERR", "Formato de email incorrecto")
  3.      WebTxt_Email.SetFocus()
  4.      Return True
  5.    Endif


Pero me marca un error en la compilación: "carácter de constante de cadena incorrecto..."

[Imagen: qgLfYlH.png]
¿Podrían, decirme cual es la forma correcta de colocar la cadena?

Gracias por las posibles respuestas.
    ¡Gracias!
#2

Hello omoreno

Mira te voy a dar tres enlaces que me parece que te serán de buena ayuda. Yo de momento no puedo darte respuesta ya que estoy igual que tu.

https://cursogambas.blogspot.com/2015/04...ambas.html
http://gambaswiki.org/wiki/doc/pcre
https://regexr.com/

Saludos Smile

Nota: Quizás si guardas la expresión en una variable String a lo mejor funciona. Digo yo.
Nota2: He testeado la expresión y funciona perfectamente con una dirección de e-mail, aunque lo he comprobado en el último enlace que te he dado, por lo tanto esa expresión esta del todo bien, debes buscar el problema en Gambas.
    ¡Gracias!
#3

Puede probar este codigo , pueda que le sirva de ayuda .
Código:
Dim reg As New RegExp
Dim Regex_String As String = "^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"
TextLabel2.Text = "Analizando"
Wait 0.5
TextLabel2.Text = ""

If (reg.Match(Trim(txt_Data.Text), Regex_String)) Then
    TextLabel2.Text = "correcto"
  Else
    TextLabel2.Text = "fallo"
Endif

henry15ea
    ¡Gracias!
#4

(27-04-2022, 01:58)HenryGuzman escribió:  Puede probar este codigo , pueda que le sirva de ayuda .
Código:
Dim reg As New RegExp
Dim Regex_String As String = "^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"
TextLabel2.Text = "Analizando"
Wait 0.5
TextLabel2.Text = ""

If (reg.Match(Trim(txt_Data.Text), Regex_String)) Then
    TextLabel2.Text = "correcto"
  Else
    TextLabel2.Text = "fallo"
Endif

Hola HenryGuzman.

Funciona mucho mejor que el que tengo: "(\\S+@\\S+)", aunque no valida el tipo de dominio.

Las pruebas:
  • Nombre de usuario: Validado SI:      omoreno@ciaxyz.com 
  • @: Validado SI:                                 omoreno@ciaxyz.com
  • Dominio Organización: Validado SI:  omoreno@ciaxyz.com
  • Dominio Tipo: Validado NO:              omoreno@ciaxyz.com
Gracias por tu código.
    ¡Gracias!
#5

Hola Omoreno,
Hice este ejemplo que tal vez te sirva.
GAMBAS
  1. Public Sub Button1_Click()
  2.  
  3.   If Validate(TextBox2.Text) Then
  4.     Label2.Text = "Ok"
  5.   Else
  6.     Label2.Text = "Error"
  7.  
  8.  
  9. Private Function Validate(sOriginal As String) As Boolean
  10.  
  11.   Dim bValid As Boolean
  12.  
  13.   bValid = RegExp.Match(sOriginal, "(?xim)^(?=.*\\.[A-Z]+$)(?=([[:alnum:]\\.+-]+)@(?1))(?!.*@.*@)(?!.*?@.*\\.\\d+$)(?!([[:punct:]]))(?!.*\\.{2,})(?!.*(?2)@)(?!.*@(?2)).*")
  14.  
  15.   Return bValid
  16.  




Archivos adjuntos
.gz sample-validate-email-regexp-0.0.1.tar.gz Tamaño: 12.05 KB  Descargas: 2

1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • omoreno
    ¡Gracias!
#6

Hola tincho.

Cool  Tu cadena funciona muy bien: Cool

"(?xim)^(?=.*\\.[A-Z]+$)(?=([[:alnum:]\\.+-]+)@(?1))(?!.*@.*@)(?!.*?@.*\\.\\d+$)(?!([[:punct:]]))(?!.*\\.{2,})(?!.*(?2)@)(?!.*@(?2)).*"

Las pruebas:
  • Nombre de usuario: Validado SI:       omoreno@ciaxyz.com 
  • @: Validado SI:                                  omoreno@ciaxyz.com
  • Dominio Organización: Validado SI:  omoreno@ciaxyz.com
  • Dominio Tipo: Validado SI:                omoreno@ciaxyz.com
Gracias por tu código.
[-] Los siguientes 1 usuarios dice gracias a omoreno por este post:
  • HenryGuzman
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)