Comunidad Gambas-es
RegExp para validar Email - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: RegExp para validar Email (/thread-875.html)



RegExp para validar Email - omoreno - 16-04-2022

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:
Código:
   If Not RegExp.Match(WebTxt_Email.Text, "(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b") Then
     WFrmMensajesX.MostrarMensajes("ERR", "Formato de email incorrecto")
     WebTxt_Email.SetFocus()
     Return True
   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.


RE: RegExp para validar Email - gambafeliz - 16-04-2022

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/uso-de-expresiones-regulares-en-gambas.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.


RE: RegExp para validar Email - HenryGuzman - 27-04-2022

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



RE: RegExp para validar Email - omoreno - 27-04-2022

(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.


RE: RegExp para validar Email - tincho - 01-05-2022

Hola Omoreno,
Hice este ejemplo que tal vez te sirva.
Código:
Public Sub Button1_Click()

  If Validate(TextBox2.Text) Then
    Label2.Text = "Ok"
  Else
    Label2.Text = "Error"
  Endif

End

Private Function Validate(sOriginal As String) As Boolean

  Dim bValid As Boolean

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

  Return bValid

End



RE: RegExp para validar Email - omoreno - 01-05-2022

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.