Foros del Web » Programando para Internet » Javascript »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de Javascript en Foros del Web. Necesito una expresion regular que acepte letras, numeros, espacio y algunos simbolos como #, & y guion. Hasta las letras, numeros y espacio voy bien, ...
  #1 (permalink)  
Antiguo 27/10/2009, 21:36
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Expresiones regulares

Necesito una expresion regular que acepte letras, numeros, espacio y algunos simbolos como #, & y guion.

Hasta las letras, numeros y espacio voy bien, pero para agragr los otros 3 simbolos no doy una.

Hasta donde voy:

Código javascript:
Ver original
  1. /^[a-zA-Z0-9 ]{4,20}$/
  2.  
  3. //Imagino que  con los otros simbolos es asi:
  4.  
  5. /^[a-zA-Z0-9-#& ]{4,20}$/

Pero el ultimo no hace nada de nada y sale un error de "Intervalo no válido en el juego de caracteres".

Espero que me puedan ayudar.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 28/10/2009, 03:14
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

Hola juandedios,

prueba con esta

/[A-Za-zñÑ0-9#&\-\s]/

salu2
  #3 (permalink)  
Antiguo 30/10/2009, 01:29
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

Hola compañer@s.

Pues resulta que io también estoy teniendo una mala experiencia con las expresiones regulares para validar una cadena de caracteres que pueden ser números, letras y los caracteres punto'.', guión bajo'_' y guión normal'-'.
He usado varias expresiones, desde la típica[\w._-] hasta la versión que pusiste aquí modificada [A-Za-zñÑ0-9_\-\.] o [A-Za-zñÑ0-9.\-]. También he usado para verificarla tanto el match como el test, pero nada, o da faios hasta con sólo caracteres o se traga lo que le pongas, incluidos @, # y demás caracteres especiales.

Cómo podría validar esto?? y si además puedo hacer que me controle que la longitud de dicha cadena sea entre 6 y 29 caracteres, mejor que mejor.

Mil gracias!!
  #4 (permalink)  
Antiguo 30/10/2009, 03:15
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

hola aniMAYtions,

¿has probado esta?

patron = /[0-9a-zA-Z\s._\-]/

sino, mira a ver y nos cuentas.

salu2
  #5 (permalink)  
Antiguo 30/10/2009, 07:18
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

No va ceSharp.
Además, para qué \s si no quiero espacios en blanco??

Gracias de todos modos!!
  #6 (permalink)  
Antiguo 30/10/2009, 07:54
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

aniMAYtions,

Bueno, lo de los espacios si no los quieres con quitar \s suficiente. Otra cosa, a lo mejor es una tontería pero según he visto en tu anterior mensaje da la impresión de que la expresión regular la pones con barra invertida (\) en vez de con barra normal (/). No tiene nada que ver una con la otra (acabo de probar con barra invertida y no funciona, ya que permite todos los caracteres).
Asegúrate de que la estas poniendo con barra normal (la de MAYUSCULAS 7) y si ya lo estabas poniendo con esta pues nada, lo que yo decía, que a lo mejor era una tontería.... jejejej

bueno, a ver que pasa...

salu2
  #7 (permalink)  
Antiguo 04/11/2009, 08:32
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

A cuáles te refieres? A las de apertura y cierre del patrón??
Esas ia se que son //. Lo que ocurre es que leí por ahi que para hacer que caracteres que significan algo en las expresiones regulares(como por ejemplo el .) había que usar la barra invertida \ delante.
Así pues la expresión queda de esta forma:

$patron = /[0-9a-zA-Z\._\-]/ ;

y luego la comprobación sería

Código:
if( valor.test(patron))
{
	document.getElementById("label").style.color='#646464';
	return(true);
}
else
{
	document.getElementById("id").value = "";
	document.getElementById("label").style.color='red';
	return(false);
}
Pero no va...
  #8 (permalink)  
Antiguo 04/11/2009, 09:05
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

yo utilizo esta función para validar cadenas de texto:

-------------------------------------
function expRegular(e)
{
var tecla;
tecla = (document.all) ? e.keyCode : e.which;
if(tecla == 8)
{return true;}
var patron;
patron = /[0-9a-zA-Z._\-]/
var te;
te = String.fromCharCode(tecla);
return patron.test(te);
}
-----------------------------------------------
y en el input type="text" le pongo el evento onkeypress="return expRegular(event);"
quizá vayan por ahí los tiros... si quieres prueba este método y, si te funciona, ya vamos viendo el tema de los caracteres.

salu2
  #9 (permalink)  
Antiguo 04/11/2009, 09:10
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

mmm... podrias explicarme ese código un poco?? hacía mucho tiempo que no usaba javascript y estoy un pelín oxidada.

Gracias!!
  #10 (permalink)  
Antiguo 04/11/2009, 10:31
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

pues vamos a ver si te lo explico bien! :)

en un input text le pones el evento onkeypress para que en cada pulsación acceda al método expRegular enviándole el evento (pulsar la tecla). La variable tecla convierte a un String el evento de teclado y con la variable patron, que incluye la expresión regular, evalúa si debe o no devolver el caracter escrito y en función de este patron escribe o no la tecla pulsada.

salu2
  #11 (permalink)  
Antiguo 04/11/2009, 11:56
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

Y no se podria hacer eso mismo con un evento onblur(como hago todas las demás validaciones) comprobando caracter por caracter de la cadena que mando??

Estaríamos en las mismas con el patrón, creo... :(
  #12 (permalink)  
Antiguo 05/11/2009, 01:36
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

Generalmente las expresiones regulares se usan para validar cadenas de texto justo en el momento que se está escribiendo. Por ejemplo en un campo de texto para escribir cantidades y evitar que se escriban letras y ahorrarte una comprobación de si es número o no lo que el usuario ha escrito.
Pero si lo quieres aplicar a un evento onblur no te va a servir de nada el tema de las expresiones regulares y sí tendrás que validar la cadena completa caracter por caracter. Pero claro, surge la duda de ¿rechazar la cadena completa cuando ha escrito los caracteres no permitidos? o ¿quitar los no permitidos automáticamente? en cualquiera de los dos casos el óptimo funcionamiento de la validación deja mucho que desear en temas relacionados con el fácil manejo de una web o una caja de texto en concreto (a mi por lo menos me 'cabrea' mucho cuando me encuentro con una de estas situaciones). Quizá lo que quieres hacer es totalmente distinto a esto que te estoy comentando. Si quieres dinos qué es exáctamente lo que quieres hacer y a lo mejor te podemos ayudar (no suelo preguntar que es lo que vas a hacer por no resultar un cotilla, pero a veces es la mejor soución a un problema)

salu2
  #13 (permalink)  
Antiguo 05/11/2009, 01:48
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

De todas formas, mientras tanto, he probado con lo que tú me has dicho.
Y no sé cómo a tí te funciona. Palabra por palabra, letra por letra, está igual(Copy-Paste).
Le pongo una @ y se la traga...

Veamos, lo que quiero hacer son validaciones de campos de registro. Este en concreto es del Oovoo. Lo que hago hasta ahora(y no por decisión mía, sino por seguir la línea de lo que estaba hecho) es eso, escribes un campo, se valida y si está mal se borra lo que escribiste y te aparece el nombre del campo en color rojo. Además no se envía el formulario hasta que todo esté bien reieno.

En verdad me da igual validar con cada pulsación de letra, lo que no me gustaría es tener que cambiar todos los métodos de validación de todos los campos de todos los formularios que tiene la aplicación que estoy realizando, entiendes??

Muchas gracias por tu aiuda

Última edición por aniMAYtions; 05/11/2009 a las 01:54 Razón: cruce de mensajes
  #14 (permalink)  
Antiguo 05/11/2009, 04:23
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Expresiones regulares

prueba con esta función, a ver si hay suerte!

-------------------------------------
function compruebaCadena(cadena)
{
var patron;
patron = /[0-9a-zA-Z._\-]/
var te;
for(i=0;i<cadena.length;i++)
{
//patron[x] = caracteres.substring(x,x+1);
te = String.fromCharCode(cadena.substring(i,i+1));

if(patron.test(cadena.substring(i,i+1))==false)
{
alert("Solo puede introducir números, letras y los caracteres '.', '_' y '-'");
document.getElementById('campo').value = '';
}
}
}
----------------------------------------
y en el input, en el evento onblur="compruebaCadena(this.value)"
si te funciona tendrás que arreglarla para que no te salga el alert (si no quieres) y que te cambie a rojo el color del campo.

prueba y nos cuentas.

salu2
  #15 (permalink)  
Antiguo 05/11/2009, 05:54
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Expresiones regulares

ALELUYA!!!
Diste con la tecla amig@. Por fin valida correctamente.
Muchísimas gracias.
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 07:24.