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. Buenas gente, a ver si me pueden ayudar. Quiero hacer una validacion por medio de expresiones regulares de nombres para un registro. La condicion es ...
  #1 (permalink)  
Antiguo 22/07/2009, 15:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Problema con expresiones regulares

Buenas gente, a ver si me pueden ayudar. Quiero hacer una validacion por medio de expresiones regulares de nombres para un registro. La condicion es que estos nombre no pueden comenzar por un numero y solo puede estar formados por numeros y letras. Y ademas deben tener una longitud entre 4 y 10 caracteres.

function validarNombre(user,min,max)
{
alert('Validando nombre: '+user.value+'\n/^[^0-9]\\w{'+min+','+max+'}$/');
if(!('/^[^0-9]\w{'+min+','+max+'}$/'.test(user.value)))
{
alert('Error.');
foco(user);
return false;
}
return true;
}

Dejo el campo vacio y no ocurre nada... pongo algo y no ocurre nada, previo a llamar a la funcion, puse un alert, ese alert si funciona, asi que el problema esta en esa funcion. Usando el firebug me dice lo siguiente: "}$/".test is not a function

Donde le erre? que me falto escapar??? Ojala puedan ayudarme.
  #2 (permalink)  
Antiguo 22/07/2009, 15:35
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

¿Para le pasas los argumentos max y min?

Prueba así

Código javascript:
Ver original
  1. function validarNombre(user)
  2. {
  3. //alert('Validando nombre: '+user.value+'\n/^[^0-9]\\w{'+min+','+max+'}$/');
  4. var patron = /^([^0-9]\w{4,10})$/;
  5. if (!patron.test(user.value)) {
  6. alert('Error.');
  7. foco(user);
  8. return false;
  9. }
  10. return true;
  11. }

Suerte

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 22/07/2009, 15:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con expresiones regulares

No puedes insertar variables en una expresión regular de esa forma. Debería ser:
Código Javascript:
Ver original
  1. var reg = new RegExp("^[^\\d][\\w\\d]{" + (min - 1) + "," + (max - 1) + "}$");
  2. alert(reg.test("cadena"))
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 22/07/2009, 16:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Problema con expresiones regulares

David lo tuyo me sirvio, pero me podes explicar como funciona?
Por que debo poner -1???
Y por que sin el simbolo $ al final no funciona correctamente???
Se que el $ significa que se aplica al ultimo caracter... pero no entiendo por que el maximo no funciona sin el $.
Lo que si yo pense que \w incluia a \d.

Gracias desde ya.
  #5 (permalink)  
Antiguo 22/07/2009, 16:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con expresiones regulares

-1 por el primer carácter que se captura con la expresión regular, el $ marca el fin de la cadena (significa que debe terminar allí)

En cuanto a lo último, pues sí, en ese caso puedes usar \w solamente.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 22/07/2009, 17:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Problema con expresiones regulares

Pero por que en todos lados dice que {n,m} donde n es el minimo de apariciones... y no n-1???
  #7 (permalink)  
Antiguo 22/07/2009, 17:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con expresiones regulares

Fíjate:
^[^\d]\w{2,3}$
¿Qué cadena cumpliría con el patrón?:
a123 (4 caracteres)
Porque en la expresión regular indicamos que haya un caracter que no sea un dígito seguido de 2 a 3 caracteres alfanuméricos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 22/07/2009, 19:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Problema con expresiones regulares

ahhhh! ya entendi! Pero todavia no me queda claro lo del singo $... no todas las expresiones regulares que vi lo llevan... lo mismo que el ^ fuera del []. Se que adentro es para indicar que no se quiere que aparesca ese caracter... pero afuera? cuando se usa? Lo mismo para el $. Gracias por la bolilla!
  #9 (permalink)  
Antiguo 22/07/2009, 19:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con expresiones regulares

Los signos ^ y $ marcan el inicio y el final de la cadena.

Por ejemplo:
Código Javascript:
Ver original
  1. alert(/^\w$/.test("a")) // Verdadero
  2. alert(/^\w$/.test("ab")) // Falso. La expresión regular indica /(inicio) un carácter (fin)/
  3.                                        // Como hay dos caracteres, no concuerda con el patrón
  4. alert(/^\w/.test("a$123")) // Verdadero. La expresión regular indica /(inicio) un carácter ... /
  5.                                        // No se indica que necesariamente la cadena debe terminar ahí.
  6.                                        // Sólo se indica que debe empezar con un caracter alfanumérico
  7. alert(/\w$/.test("$a")) // Verdadero. La expresión regular indica /... un carácter (fin) /
  8. alert(/\w$/.test("a$")) // Falso. No termina con un carácter alfanumérico
  9. alert(/\w/.test("$a$")) // Verdadero. La expresión regular indica / ... un carácter ... /
  10.                                    // La única condición es que haya dentro de la cadena un carácter alfanumérico
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 23/07/2009, 10:40
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Problema con expresiones regulares

Buenisimo! gracias por los ejemplos... me quedo clarisimo!
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 17:36.