Foros del Web » Programando para Internet » Javascript »

Dudas del Faq Validar Correo

Estas en el tema de Dudas del Faq Validar Correo en el foro de Javascript en Foros del Web. Hola. A ver si alguien me tiene la paciencia para explicarme con manzanitas unas partes de la validación: /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ específicamente las marcadas con /^ ([a-zA-Z0-9_.-]) ...
  #1 (permalink)  
Antiguo 21/08/2003, 13:31
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Dudas del Faq Validar Correo

Hola.

A ver si alguien me tiene la paciencia para explicarme con manzanitas unas partes de la validación:

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

específicamente las marcadas con

/^
([a-zA-Z0-9_.-])
+
@(([a-zA-Z0-9-])+.) ¿por qué no hay un + después del @?, y ¿por qué están anidados esos paréntesis?
+
([a-zA-Z0-9]{2,4}) ¿para qué es el {2,4}?
+$/

Gracias
  #2 (permalink)  
Antiguo 21/08/2003, 13:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Dudas del Faq Validar Correo

/^

La barra / es el inicio de la expresión regular, al igual que al final de ésta hay otra barra. El ^ a continuación indica que, el elemento que le sigue, debe estar al inicio de la cadena.


([a-zA-Z0-9_.-])

al llevar delante el ^ indica que la cadena debe comenzar con caracteres de la a a la z (minúsculas) de la A a la Z (mayúsculas) números entre el 0 y el 9, un punto, un guion medio o uno bajo. No son obligados, pero lo que haya debe ceñirse a esos caracteres propuestos.


+
El + es un cuantificador que indica cuántas veces debe aparecer lo que le precede (en este caso ([a-zA-Z0-9_.-]) ). En este caso, el cuantificador (+) indica que algunos de esos caracteres deben aparecer una o más veces.


@(([a-zA-Z0-9-])+.) ¿por qué no hay un + después del @?, y ¿por qué están anidados esos paréntesis?

al estar la arroba sola indica que sí o sí, debe estar. Por eso no lleva ningún más, o entonces podría aparecer una o más veces, y sólo ha de estar una (obvio)
Los paréntesis anidados unen dos posibilidades; la primera que aparezcan caracteres como los que están entre corchetes cuqantificados por el + que está detrás (que indica una o más veces) y por separado el punto, que deberá estár sí o sí. Y eso, agrupado entre paréntesis seguido de otro cuantificador (+) indica que debe aparecer en la cadena una o más veces.

+
este lo expliqué arriba

([a-zA-Z0-9]{2,4}) ¿para qué es el {2,4}?
indica que cualquiera de los caracteres de los que está entre los paréntesis deben aparecer 2,3 ó 4 veces.

+$/

el + indica que lo que le precede que explique dos líneas más arriba debe aparecer al menos una vez y el $ que así debe terminar la cadena. La barra / indica el cierre de la expresión regular.

  #3 (permalink)  
Antiguo 21/08/2003, 14:19
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Gracias
  #4 (permalink)  
Antiguo 09/10/2003, 01:04
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Hola, otra vez.

Estuve probando el validador y no me respeta el punto.

Me acepta como válida una dirección abcd@efghi sin importar que no termine con un dot com por ejemplo.
  #5 (permalink)  
Antiguo 09/10/2003, 12:25
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, Rafael.

Prueba con esto:

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.+ )+([a-zA-Z0-9]{2,4})+$/

Saludos,
  #6 (permalink)  
Antiguo 09/10/2003, 14:04
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Ufff!!! Lo que se aprende leyendo las dudas de otros!!!
  #7 (permalink)  
Antiguo 10/10/2003, 01:09
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Cita:
Mensaje Original por Kaopectate
Ufff!!! Lo que se aprende leyendo las dudas de otros!!!
Muy cierto, Kao. La explicación de Tunait (Hola a los dos ) es un mititutorial muy útil.

Saludos,
  #8 (permalink)  
Antiguo 10/10/2003, 09:58
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Netscape Si, explorer no

Gracias a todos.

Con ese "+" ya sirve en Netscape 7 , pero en Explorer 5.5 no .

Kao, habrá que poner ese + en el faq.
  #9 (permalink)  
Antiguo 10/10/2003, 11:34
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Otra forma más breve de validar el correo sería con:

/^([\w_.-])+@((\w)+.)+(\w{2,4})+$/

\w representa un carácter alfanumérico, es decir equivale a [0-9A-Za-z]

Saludos,
  #10 (permalink)  
Antiguo 10/10/2003, 20:49
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Pues yo siempre he querido hacer una entrada en las FAQs referente a como usar las expresiones regulares, pero para ello primero debería aprender a usarlas. La descripción de tunait ha sido tan clara y completa que nuevamente quisiera ver esa entrada hecha...Heleeeeeeenaaaaaaa!!!!!
  #11 (permalink)  
Antiguo 14/10/2003, 09:10
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
En algún lado de por aquí encontré esta expresión:

/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/

y parece que funciona bien para JavaScript en Ie y Ne e incluso en Php.

Trataré con la simplificación que propones JavierB.

P.D. Parece que la w incluye además el guión bajo _ , por lo menos en JavaScript y JScript.

Última edición por Rafael; 14/10/2003 a las 09:12
  #12 (permalink)  
Antiguo 05/05/2005, 16:21
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
tengo una duda, como hago para que pueda introducir parentesis y/o corchetes y me los acepte?? probe escapandolos con contrabarra y no me funciona
  #13 (permalink)  
Antiguo 19/05/2005, 16:43
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Pues según la guía de Jscript debe funcionar.

Cita:
Para que coincidan los caracteres paréntesis, ( ), utilice '\(' o '\)'.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:11.