Foros del Web » Programando para Internet » Javascript »

Expresion regular para validar texto

Estas en el tema de Expresion regular para validar texto en el foro de Javascript en Foros del Web. Hola que tal amigos! Tengo una duda como puedo crear una expresin regular que me convierta esto: Promedio Mensual día 100 0.4 878 0.0 0.0 ...
  #1 (permalink)  
Antiguo 01/09/2011, 23:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Expresion regular para validar texto

Hola que tal amigos!

Tengo una duda como puedo crear una expresin regular que me convierta esto:

Promedio Mensual día 100 0.4 878 0.0 0.0 99.4 13.0 53.0

A:

Promedio Mensual día,100,0.4,878,0.0,0.0,99.4,13.0,53.0

Si se dan cuenta al texto le respeta su estado tal cual esta pero apartir de que termina el texto coloca una coma (,) y apartir de ahi en cada espacio colca comas.

Con esto: replace(/\s/g, ',')

Lo que hace es ponerme comoas en todos los espacios en blanco, pero como hago apra que me respete que apartir de que termine el texto ahora si empiece a correr el codigo de colocar comas en espacios en blanco :S

gracias, saludos!!
  #2 (permalink)  
Antiguo 02/09/2011, 07:03
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Expresion regular para validar texto

Podrías usar algo como esto:
Código Javascript:
Ver original
  1. str = str.replace(/\s(\d)/g, '$1,');
Para que sólo reemplace si después del espacio hay un número.
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
  #3 (permalink)  
Antiguo 02/09/2011, 08:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por _cronos2 Ver Mensaje
Podrías usar algo como esto:
Código Javascript:
Ver original
  1. str = str.replace(/\s(\d)/g, '$1,');
Para que sólo reemplace si después del espacio hay un número.
Saludos (:
Hola, gracias por responder..

Oye mira lo probe y de este valor:

Promedio Valores 100 0.0 871 0.0 0.0 98.6 13.9 20.6 61.0 2 0.0 0 0 0 0

me devuelve

Promedio Valores1,000,.08,710,.00,.09,8.61,3.92,0.66,1.02,0 ,.00,0,0,0,

que sera? saludos!
  #4 (permalink)  
Antiguo 02/09/2011, 09:25
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Expresion regular para validar texto

Fallo técnico:
Código Javascript:
Ver original
  1. str = str.replace(/\s(\d)/g, ',$1');
__________________
" 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
  #5 (permalink)  
Antiguo 02/09/2011, 09:26
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 14 años, 5 meses
Puntos: 63
Respuesta: Expresion regular para validar texto

A mi la función de _cronos2 me da es:

Código:
1000,.48,780,.00,.09,9.41,3.05,3.0
y es de esperarse, ya que manda a remplazar no solo el espacio, si no también el numero que le precede, con solo hacer:

Código:
str = str.replace(/\s/g, ',');
Bastaria para poder hacer lo que necesitas, ya que busca todos los espacios y los reemplaza por comas. Espero haberte sido de ayuda.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #6 (permalink)  
Antiguo 02/09/2011, 10:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por laratik Ver Mensaje
A mi la función de _cronos2 me da es:

Código:
1000,.48,780,.00,.09,9.41,3.05,3.0
y es de esperarse, ya que manda a remplazar no solo el espacio, si no también el numero que le precede, con solo hacer:

Código:
str = str.replace(/\s/g, ',');
Bastaria para poder hacer lo que necesitas, ya que busca todos los espacios y los reemplaza por comas. Espero haberte sido de ayuda.
Hola que tal,, asi lo tenia pero puse mal mi resultado.. lo que pasa esque mete comas hasta dentro de los espacios del texto y eso es lo que no quiero ejemplo:

cuento con este texto:
Promedio Mensual día 100 0.4 878 0.0 0.0 99.4 13.0 53.0

si porngo: lace(/\s/g, ',')

RESULTADO:

Promedio,Mensual,día,100,0.4,878,0.0,0.0,99.4,13.0 ,53.0

Y YO DESEO:

Promedio Mensual día,100,0.4,878,0.0,0.0,99.4,13.0,53.0

Si te das cuenta en la ultima letra del texto ahora si hay una coma y apartir de ahi por cada espacio genera las comas..

espero me puedan ayudar, gracias!!
  #7 (permalink)  
Antiguo 02/09/2011, 10:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por _cronos2 Ver Mensaje
Fallo técnico:
Código Javascript:
Ver original
  1. str = str.replace(/\s(\d)/g, ',$1');
Como ? es lo mismo que me pusiste en el anterior jeje,., por cierto una duda para que sirbe el $1 ?? en: str = str.replace(/\s(\d)/g, ',$1');
  #8 (permalink)  
Antiguo 02/09/2011, 13:04
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 14 años, 5 meses
Puntos: 63
Respuesta: Expresion regular para validar texto

mmm... no había entendido bien la pregunta, creí que solo utilizabas los números. En el caso que que necesitas puedes utilizar el ultimo ejemplo de _cronos2:

Código:
str = str.replace(/\s(\d)/g, ',$1');
Que no es lo mismo que:

Código:
str = str.replace(/\s(\d)/g, '$1,');
Fijate en la posición de la coma.

$1 = "escapar" el caracter numerico para que no sea reemplazado. SALUDOS
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #9 (permalink)  
Antiguo 02/09/2011, 13:06
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Expresion regular para validar texto

prueba la segunda expresión de _cronos2 verás como funciona, aunque tu no aprecies la sutil diferencia

al hacer una agrupación () se puede extraer con $n
  #10 (permalink)  
Antiguo 02/09/2011, 13:56
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, 7 meses
Puntos: 1485
Respuesta: Expresion regular para validar texto

buenas,
solo por comentar. la solución también puede ser con un look-ahead assertion, característica que muy rara vez veo utilizarse. es casi lo mismo que la solución de @cronos, lo único que te evitas la agrupación de contenido que quieras retener.
Código:
replace(/\s(?=\d)/g, ',');
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 02/09/2011, 14:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
solo por comentar. la solución también puede ser con un look-ahead assertion, característica que muy rara vez veo utilizarse. es casi lo mismo que la solución de @cronos, lo único que te evitas la agrupación de contenido que quieras retener.
Código:
replace(/\s(?=\d)/g, ',');
Woow tanto el tuyo como el de cronos jalaron perfectamente increible!

oye una duda, porque en el de cronos pone al final ,$1 '?

1.str = str.replace(/\s(\d)/g, '$1,');

que es el $1 ??

y otra duda, el resultado queda:

promedio tipos,100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6,1,0. 0,0,0,0,0,0,0.06

se podrá que en el texto se le coloque un '' ? ejemplo:

'promedio tipos',100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6,1,0.0,0,0 ,0,0,0,0.06

replace(/\s(?=\d)/g, ',');

? como seria

gracias, a todos quedo de 100 =)
  #12 (permalink)  
Antiguo 02/09/2011, 14:38
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, 7 meses
Puntos: 1485
Respuesta: Expresion regular para validar texto

me temo que tendrás que invocar nuevamente replace porque el segundo argumento solo puede admitir un string para el patrón. el nuevo patrón consiste de busqueda por caracteres alfabético y espacios.
Código:
/[a-z\xc0-\xff]+/gi, "'$&'"
sobre el significado del signo dolar, es una forma de hacer referencia a los grupos del patrón fuera del contexto de la expresión.
http://www.regular-expressions.info/brackets.html
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #13 (permalink)  
Antiguo 02/09/2011, 15:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por zerokilled Ver Mensaje
me temo que tendrás que invocar nuevamente replace porque el segundo argumento solo puede admitir un string para el patrón. el nuevo patrón consiste de busqueda por caracteres alfabético y espacios.
Código:
/[a-z\xc0-\xff]+/gi, "'$&'"
sobre el significado del signo dolar, es una forma de hacer referencia a los grupos del patrón fuera del contexto de la expresión.
http://www.regular-expressions.info/brackets.html
Perfecto, solo que el resultado en cada espacio me pone las comillas simples.. no se podra todo parejo?

el resultado con la expresion que me diste:

'datos' 'de' 'alumnos',100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6, 1,0.0,0,0,0,0,0,0.06

y necesito:

'daots de alumnos',100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6,1 ,0.0,0,0,0,0,0,0.06

??

gracias, man!
  #14 (permalink)  
Antiguo 02/09/2011, 15:44
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, 7 meses
Puntos: 1485
Respuesta: Expresion regular para validar texto

ohhhhh cierto, error mio! lo copie mal de la prueba que habia hecho... dentro de los corchetes y al final, agrega \s.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #15 (permalink)  
Antiguo 02/09/2011, 16:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Exclamación Respuesta: Expresion regular para validar texto

Cita:
Iniciado por zerokilled Ver Mensaje
ohhhhh cierto, error mio! lo copie mal de la prueba que habia hecho... dentro de los corchetes y al final, agrega \s.
Que tal,, oye tengo una duda, yo pongo:

campoTextArea = campoTextArea.replace(/\s(?=\d)/g, ',');
campoTextArea = campoTextArea.replace(/[a-z\xc0-\xff\s]+/gi, "'$&'");

El contenido:

Aceite de cacahuete 100 0.4 878 0.0 0.0 99.4 13.0 53.0 24.6 1 0.0 0 0 0 0 0 0.06
Aceite de coco 100 0.0 884 0.0 0.0 100.0 **.* 5.8 1.8 0 0.0 2 2 0 2 1 0.04
Aceite de germen de trigo 100 0.0 879 0.0 0.0 99.5 17.2 15.7 64.7 0 0.0 0 0 0 0 0

El resultado:

Código PHP:
'Aceite de cacahuete',100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6,1,0.0,0,0,0,0,0,0.06
Aceite de coco'
,100,0.0,884,0.0,0.0,100.0' '**.*,5.8,1.8,0,0.0,2,2,0,2,1,0.04
Aceite de germen de trigo'
,100,0.0,879,0.0,0.0,99.5,17.2,15.7,64.7,0,0.0,0,0,0,0,0,0.00
Aceite de girasol'
,100,0.2,882,0.0,0.0,99.8,11.0,22.4,60.7,2,0.0,0,0,0,0,0,0.03 
El resultado deseado:

'Aceite de cacahuete',100,0.4,878,0.0,0.0,99.4,13.0,53.0,24.6 ,1,0.0,0,0,0,0,0,0.06|
'Aceite de coco',100,0.0,884,0.0,0.0,100.0' '**.*,5.8,1.8,0,0.0,2,2,0,2,1,0.04|
'Aceite de germen de trigo',100,0.0,879,0.0,0.0,99.5,17.2,15.7,64.7,0,0 .0,0,0,0,0,0,0.00

No se si sean los saltos de linea... que ocacione eso..
Como pudo hacer para que cada final de la sentencia me ponga un pipe |
??

Muchas,gracias

Última edición por marco64yes; 02/09/2011 a las 17:16
  #16 (permalink)  
Antiguo 02/09/2011, 17:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 1 mes
Puntos: 9
Respuesta: Expresion regular para validar texto

Ya me resolvieron la duda aqui:
http://www.forosdelweb.com/f13/expre...5/#post3976967

Gracias a todos!

Etiquetas: expresion, 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 00:26.