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
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()
Pero me marca un error en la compilación: "
carácter de constante de cadena incorrecto..."
![[Imagen: qgLfYlH.png]](https://i.imgur.com/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
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.
GAMBAS
If Validate
(TextBox2.
Text) Then Label2.Text = "Ok"
Label2.Text = "Error"
bValid
= RegExp.
Match(sOriginal,
"(?xim)^(?=.*\\.[A-Z]+$)(?=([[:alnum:]\\.+-]+)@(?1))(?!.*@.*@)(?!.*?@.*\\.\\d+$)(?!([[:punct:]]))(?!.*\\.{2,})(?!.*(?2)@)(?!.*@(?2)).*")
RE: RegExp para validar Email -
omoreno - 01-05-2022
Hola tincho.

Tu cadena funciona muy bien:
"(?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.