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/forumdisplay.php?fid=3)
+--- Foro: General (https://gambas-es.org/forumdisplay.php?fid=4)
+--- Tema: RegExp para validar Email (/showthread.php?tid=875)



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


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: Gracias por tu código.


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

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.  





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: Gracias por tu código.