Foros del Web » Programando para Internet » Javascript »

duda al actualizar expresion regular

Estas en el tema de duda al actualizar expresion regular en el foro de Javascript en Foros del Web. Hola lista, tengo una duda algo newbie. Tengo 2 funciones así: Código: var funcion1 = function(cadena) { var regex = /^[\d\.]*$/i; return regex.test(cadena); } var ...
  #1 (permalink)  
Antiguo 05/10/2011, 07:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 9 meses
Puntos: 27
duda al actualizar expresion regular

Hola lista, tengo una duda algo newbie. Tengo 2 funciones así:
Código:
var funcion1 = function(cadena) {
   var regex = /^[\d\.]*$/i;
   return regex.test(cadena);
}
var funcion2 = function(cadena) {
	return cadena.replace(/[^0-9\,]/g,'').replace(/[^0-9]/g,'.');
}
Ambas funcionan. Ahora mis dudas:

1)Con la funcion1
La idea de la primera es verificar si una cadena contine sólo digitos y puntos. Es decir, algo como "1.32432432.123" es valido y algo como '121.1dsfs,23 9' invalido.
La cosa es que debo actualizarla para que la expresion varíe, ya que en algunos casos podría ser de números y puntos y en otros de números y comas. Algo como:
Código:
var separador = '.';
var funcion1 = function(cadena) {
   var regex = '/^[\d\' + separador +']*$/i';
   return regex.test(cadena);
}
2) La duda con funcion2 es similiar, la idea inicial es que yo entregase una cadena con el formato '1.123.678,99' y el devolviese '1123678.99', pero ahora el separador de miles '.' podría ser en ocasiones ',' y en otras ','. Y obviamente de manera inversa para el separador de decimales.

El problema es que no sé como crear una cadena representativa que vaya concatenando los separadores, para luego transformarla en expresion regular. He tratado con new RegExp, pero no se donde me equivoco, ya que no me resulta.

Saludos, espero puedan orientarme.

P.D.: Obviamente la primera funcion está enfocada en controlar el formato de cadenas representativas de numeros enteros, y la segunda de decimales, sin embargo a mí NO me interesa que se controlen las posiciones de los separadores de miles.
  #2 (permalink)  
Antiguo 05/10/2011, 07:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: duda al actualizar expresion regular

Al final la primera la dejé así
Código:
var regex = new RegExp('^[\\d\\'+separador+']*$');
Al final el "i" de case insensitive estaba de más, ya que sólo pregunto por números y separadores. Creo que por ahí va la cosa.

y la otra la deje así
Código:
var funcion2 = function(cadena) {
   var regex = new RegExp('[^\\d\\'+sDecimal+']','g');
   return cadena.replace(regex,'').replace(/[^\d]/g,'.');
}
Para dejar una cadena en el formato apropiado para convertirla en número.

Última edición por refreegrata; 05/10/2011 a las 08:03

Etiquetas: expresion, funcion, regular
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 01:35.