Foros del Web » Programando para Internet » Javascript »

No funciona .test (para expresiones regulares)

Estas en el tema de No funciona .test (para expresiones regulares) en el foro de Javascript en Foros del Web. Hola, pues eso, no se porqué, al final pensando que era error mio he copiado diferents funciones que he visto por internet. Ninguna me funciona. ...
  #1 (permalink)  
Antiguo 17/09/2010, 12:44
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
No funciona .test (para expresiones regulares)

Hola, pues eso, no se porqué, al final pensando que era error mio he copiado diferents funciones que he visto por internet. Ninguna me funciona.

Código:
function validarEmail(formulari) {
if (/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/.test(formulari.mail.value)){
alert("La dirección de email " + formulari.mail.value + " es correcta.") 
return (true)
} else {
alert("La dirección de email es incorrecta.");
return (false);
}
}
A formulari me entra document.nombredelformulario, el problema tiene que ser del test, pero es posible que no funcione????
  #2 (permalink)  
Antiguo 17/09/2010, 13:07
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No funciona .test (para expresiones regulares)

la expresion regular esta mal. para indicar las clases tienes que incluir un backslash por delante. por ejemplo, en la expresion usas la clase word pero le falta el backslash.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 17/09/2010, 13:15
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: No funciona .test (para expresiones regulares)

Normal que no funcione, esa expresión es errónea. Donde pone 'w' sólo acepta 'w', así que se confundieron y pusieron eso en vez de \w, que acepta cualquier carácter alfanumérico; y donde pone '.', que por sí sólo equivale a cualquier carácter, tiene que escaparse como \. (sólo fuera de los corchetes, dentro no hace falta). Además esa expresión, al menos para mí, es incompleta. Cambiando w por \w y . por \. , validaría un correo del tipo [email protected], pero no [email protected], por tanto yo la cambiaría así:
Código Javascript:
Ver original
  1. /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3,4})+$/
Evidentemente ahora vendrá alguien con más experiencia que yo, y te dirá que le falta algo más, o eso espero, así que revisa este tema de vez en cuando.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Última edición por _cronos2; 17/09/2010 a las 13:17 Razón: Se me adelantó zerokilled ;)
  #4 (permalink)  
Antiguo 17/09/2010, 13:31
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: No funciona .test (para expresiones regulares)

Vale, he puesto la expresión como dices.
Lo primero raro era que el parentesis del if me sale en verde y no en azul, como sale con el dreamweaver. Para que no haga cosas raras lo he puesto en una variable.

Código Javascript:
Ver original
  1. function validarEmail(formulari) {
  2. var expreg = /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3,4})+$/
  3. if (expreg.test(formulari.mail.value)){
  4. alert("La dirección de email " + formulari.mail.value + " es correcta.")
  5. return (true)
  6. } else {
  7. alert("La dirección de email es incorrecta.");
  8. return (false);
  9. }
  10. }

Sigue sin funcionar, siempre me dice que la dirección es incorrecta, ponga lo que ponga.
  #5 (permalink)  
Antiguo 17/09/2010, 13:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No funciona .test (para expresiones regulares)

hasta donde yo conozco, en el cuantificador solo es admitido hasta dos numeros y tienes tres, {2,3,4}. si aun asi no te funciona, indicanos un ejemplo de la direccion email que no te funciona.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 17/09/2010, 13:46
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: No funciona .test (para expresiones regulares)

Yo he visto expresiones regulares con 3
Quizá también estaba equivocado yo xD
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 17/09/2010, 13:59
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No funciona .test (para expresiones regulares)

lo comprobe en chrome, y al menos no produce error de sintaxis pero no me funciona con tres numeros. aparte de que tampoco tiene sentido porque realmente lo que quieres decir es un rango de dos a cuatro el cual se puede expresar asi {2,4}.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 17/09/2010, 14:07
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: No funciona .test (para expresiones regulares)

poniendo solo 2 y no los 3 en el cuantificador funciona perfectamente!
Grácias a los dos, me estaba volviendo loco por una tonteria....
  #9 (permalink)  
Antiguo 18/09/2010, 06:12
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: No funciona .test (para expresiones regulares)

Ok, tenías tú razón ;)
Pero entonces, si yo quiero que puedan aparecer 2 ó 4 veces, pero no 3, ¿cómo se haría? ¿ (\w{2}|\w{4}) ?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 18/09/2010, 08:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: No funciona .test (para expresiones regulares)

Cita:
Iniciado por _cronos2 Ver Mensaje
Ok, tenías tú razón ;)
Pero entonces, si yo quiero que puedan aparecer 2 ó 4 veces, pero no 3, ¿cómo se haría? ¿ (\w{2}|\w{4}) ?
Saludos (:
Buena pregunta. Yo no sabría hacerlo de otra manera. Un poco de lectura
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: expresiones, regulares, test
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




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