omoreno   16-04-2022, 21:40
#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:
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.
gambafeliz   16-04-2022, 23:32
#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.
Última modificación: 16-04-2022, 23:40 por gambafeliz.
HenryGuzman   27-04-2022, 01:58
#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
omoreno   27-04-2022, 17:24
#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.
tincho   01-05-2022, 09:54
#5
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
Archivos adjuntos
.gz
sample-validate-email-regexp-0.0.1.tar.gz (Tamaño: 12.05 KB Descargas: 2)

1 Saludo.
omoreno   01-05-2022, 17:09
#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.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.