Foros del Web » Programando para Internet » Javascript »

Problema con comparacion

Estas en el tema de Problema con comparacion en el foro de Javascript en Foros del Web. Hola, tengo un problema bien tonto es que estoy intentando hacer una comparacion con una funcion regular, pero cuando ejecuto la accion solo me apareec ...
  #1 (permalink)  
Antiguo 25/09/2009, 12:11
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Problema con comparacion

Hola, tengo un problema bien tonto es que estoy intentando hacer una comparacion con una funcion regular, pero cuando ejecuto la accion solo me apareec el mensaje de error aun que los digitos ingresados conincidan con la logica de la expresion, alguien me puede dar una mano? este es el codigo problematico.

Código js:
Ver original
  1. var dataString = 'datoComparado='+ datoComparado;
  2.         if(datoComparado!=/^(\d{9}-\d{1})$/){
  3.             $("#dato").html('<font color="red"><i>El dato no coincide con el formato, intente de nuevo.</i></font>');
  4.         }else
  5.         {
  #2 (permalink)  
Antiguo 25/09/2009, 12:25
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 comparacion

Código:
datoComparado!=/^(\d{9}-\d{1})$/
en esa linea estas comparando dos tipos de datos distintos, string vs objeto, lo cual te va a devolver true porque evidentemente no son iguales (!=). estoy seguro que eso no es lo que quieres hacer. lo que quieres hacer es aplicar la expresion regular a un string para determinar si cumple con el formato. las expresiones regulares tienen diferentes funciones para comparar la expresion con un string. entre ellos, tenemos test el cual devuelve un boolean donde true significa que la expresion pudo parear la expresion con el string, y false cuando no encuentra ningun posible pareo.

en tu caso, lo que tienes que hacer es,
Código:
if(/^(\d{9}-\d{1})$/.test(datoComparado)){
...
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/09/2009, 12:31
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con comparacion

Hola zerokilled, gracias por tu respuesta, intente tu ejemplo pero me marco caracater invalido en la linea modificada.
  #4 (permalink)  
Antiguo 25/09/2009, 12:43
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 comparacion

dudo que ahi sea el problema. esto es lo que tengo, fijate que no cambia mucho, solo que en lugar de una variable le paso un string y dentro del bloque un alert. me funciona en Fx, iexplorer, y chrome.
Código:
if(/^(\d{9}-\d{1})$/.test("123456789-0")){
alert(true);
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 25/09/2009, 12:49
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con comparacion

Lo intente, no me manda error, pero sigue como en el principio, yo creo que el error se encuentra ahi, si quieres puedes darle una checada al codigo, no es muy largo.

Código js:
Ver original
  1. $(function() {
  2.     $('#consulta input[type:"text"]').keypress(function(e){return e.which!=13})
  3.     $(".search_button").click(function() {
  4.         var search_word = $("#search_box").val();
  5.         var dataString = 'search_word='+ search_word;
  6.         if(/^(\d{9}-\d{1})$/.test(search_word)){
  7.             $("#searchword").html('<font color="red"><i>La matricula no coincide con el formato, intente de nuevo.</i></font>');
  8.         }else
  9.         {
  10.             $.ajax({
  11.                 type: "GET",
  12.                 url: "consulta.php",
  13.                 data: dataString,
  14.                 cache: false,
  15.                 beforeSend: function(html) {
  16.                     document.getElementById("insert_search").innerHTML = '';
  17.                     $("#flash").show();
  18.                     $("#searchword").show();
  19.                     $("#searchword").html('Resultados de:&nbsp;<font color="green"><i>'+search_word+'</i></font>');
  20.                     $("#flash").html('<img src="img/load.gif" align="absmiddle">&nbsp;Realizando la busqueda...');
  21.                 },
  22.                 success: function(html){
  23.                     $("#insert_search").show();
  24.                     $("#insert_search").append(html);
  25.                     $("#flash").hide();
  26.                 }
  27.             });
  28.         }
  29.         return false;
  30.     });
  31. });
  #6 (permalink)  
Antiguo 25/09/2009, 13:03
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 comparacion

vaya que ya entendi por donde va el problema. recuerda que test te indica si coincide la expresion con el string. true indica que encontro alguna coincidencia, de modo que en tu caso tiene que devolver false para mostrar el error. simplemente tienes que anteponer el operador not (!) antes de la expresion.
Código:
if(!/expresion/.test(...))...
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 25/09/2009, 13:07
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con comparacion

Muy bien muchas gracias, problema resuelto, y eh entendido un poco mas la comparacion de este modo.
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:52.