Foros del Web » Programando para Internet » Javascript »

Problema con expresiones regulares

Estas en el tema de Problema con expresiones regulares en el foro de Javascript en Foros del Web. Hola buenas tardes a ver si entre todos me podeis echar un cable. Bueno el problema que tengo es el siguiente... estoy itentando usar una ...
  #1 (permalink)  
Antiguo 19/07/2010, 13:05
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con expresiones regulares

Hola buenas tardes a ver si entre todos me podeis echar un cable.

Bueno el problema que tengo es el siguiente... estoy itentando usar una expresion regular y la funcion match para validar unos datos de un formulario y no consigo que funcione. Le he estado dando vueltas y no se que es lo que hago mal :(

El codigo es el siguiente:

El campo del formulario que quiero validar...

<p>Usuario <input type="text" name="Usuario" size="20" value=""></p>

Y donde intento usar la expresión regular que es donde fallo...

<script language="Javascript">
function Verifica(formulario){
if(formulario.Usuario.value.match(\W)){
alert("El usuario contiene carácteres prohibidos");
document.formulario.Usuario.focus();
return 0;
}
}
</script>

No si debo poner alguna libreria para poder usar la funcion match
Gracias de antemano. Un saludo!
  #2 (permalink)  
Antiguo 19/07/2010, 13:51
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Problema con expresiones regulares

Hola, bienvenido

Sería mejor con test y modificar la exprsión. Algo como esto
Código Javascript:
Ver original
  1. if(!/^(\w)+$/.test(formulario.Usuario.value)){
  2. alert("El usuario contiene carácteres prohibidos");
  3. formulario.Usuario.focus();
  4. return 1;
  5. } else {
  6. return 0;

Suerte
__________________
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;" />
  #3 (permalink)  
Antiguo 19/07/2010, 15:17
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con expresiones regulares

¿1 es true o false? ¿No es true? ¿Y \w y \W no era distinto? Que por cierto ¿qué significan? 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
  #4 (permalink)  
Antiguo 19/07/2010, 15:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Problema con expresiones regulares

Hola

Cita:
Iniciado por _cronos2 Ver Mensaje
¿1 es true o false? ¿No es true? ¿Y \w y \W no era distinto? Que por cierto ¿qué significan? xD
Sí, el 1 es true, por lo tanto 0 es false
\w y \W representan cosas distintas. Mientras que \w representa cualquier carácter alfanumérico. \W representa cualquier carácter NO alfanumérico. 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;" />
  #5 (permalink)  
Antiguo 20/07/2010, 05:52
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con expresiones regulares

Ah, lo decía porque pone que si no pasa el test() devuelva true. Y además en el códiogo de él pone \W y en el tuyo \w, ¿es porque match y test funcionan diferente?
__________________
" 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
  #6 (permalink)  
Antiguo 20/07/2010, 06:34
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Problema con expresiones regulares

Hola

Cita:
Iniciado por _cronos2 Ver Mensaje
Ah, lo decía porque pone que si no pasa el test() devuelva true. Y además en el códiogo de él pone \W y en el tuyo \w, ¿es porque match y test funcionan diferente?
Ahora entiendo la pregunta. Es solo un error de copy/paste y tipeo.
La diferencia entre match y test está en que match te devuelve la cadena que coincide con la expresión, mientras que test de devuelve un boleano, true si hay coincidencia y false si no se encontró ninguna coincidencia. Para el caso que le ocupa test es el más adecuado
__________________
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;" />
  #7 (permalink)  
Antiguo 20/07/2010, 14:27
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con expresiones regulares

Ok, muchas gracias, la verdad es que siempre dejo para otro día lo de las expresiones regulares pero no puedo retrasarlo eternamente 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
  #8 (permalink)  
Antiguo 21/07/2010, 07:51
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: Problema con expresiones regulares

@_cronos2,
te sugiero que en los mas pronto estudies acerca de las expresiones regulares. cuando comence en javascript, recuerdo haber tomado la misma decision. luego cuando me decidi, me fije que muchas de las operaciones para tratar cadenas podian realizarce mucho mas simple con expresiones. por ejemplo, operaciones que usan extensivamente funciones como substring y indexOf, muchas de las veces se pueden reducir a pocas lineas mas comprensible. ¡anímate!
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: expresiones, regulares
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 21:40.