Foros del Web » Programando para Internet » Javascript »

Problema con test y expresión regular

Estas en el tema de Problema con test y expresión regular en el foro de Javascript en Foros del Web. Hola: No soy capaz de que me funcione una función para comprobar que un nombre SOLO tenga caracteres alfanuméricos.La función es esta: function validarCampo(campo,tipo) { ...
  #1 (permalink)  
Antiguo 19/09/2011, 00:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Problema con test y expresión regular

Hola:

No soy capaz de que me funcione una función para comprobar que un nombre SOLO tenga caracteres alfanuméricos.La función es esta:

function validarCampo(campo,tipo)
{
var patron;
switch(tipo)
{
case "alfanumerico":
patron = /^[a-zA-Z_0-9]$/;
break;

case "password":
patron = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,12})$/;
break;
}


if ( campo == null || campo.length == 0 || patron.test(campo) ) {
return false;
}

else
return true;
}


Y la llamo así:

if (!validarCampo(nombre,"alfanumerico") )
{
$("#erroresRegistro").append("El nombre no puede estar vacío ni contener caracteres especiales<br/>");
hayErrores = true;
}
  #2 (permalink)  
Antiguo 19/09/2011, 02:09
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 test y expresión regular

buenas,
la expresión para alfanumérico esta bien. solo le falta definir la longitud. es decir, cuantos caracteres debe evaluar como mínimo y máximo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 19/09/2011, 03:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Problema con test y expresión regular

Eso no tiene demasiada importancia, el problema es que no funciona como debería. Es decir si meto caracteres raros no devuelve falso
  #4 (permalink)  
Antiguo 19/09/2011, 05:15
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 test y expresión regular

el otro detalle es que cuando invocas test, debes invertir el boolean para que pueda entrar al cuerpo de la condición if. cuando patrón no coincide con el string, entonces devuelve. por tanto, si todas las condiciones devuelven false no entra en if.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 19/09/2011, 09:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Problema con test y expresión regular

Estoy muy pez en expresiones regulares. No sé como arreglar esto, te refieres a negar la llamada al test o a quitarle ^ al patrón en sí

Si alguien sabe de alguna función para validar nombres y apellidos y eso que la ponga aquí por favor
  #6 (permalink)  
Antiguo 19/09/2011, 09:52
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 test y expresión regular

me refiero a negar el valor devuelto por test.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 19/09/2011, 11:11
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con test y expresión regular

Por cierto, no uses un switch D: Usa un objeto:
Cita:
var rgxps = {
'alfanum' : ...,
'pass' : ...
};

var patron = rgxps[tipo];
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

Etiquetas: funcion, regular, 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 23:31.