Foros del Web » Programando para Internet » Javascript »

Duda expresion regular! un tonteria dificil

Estas en el tema de Duda expresion regular! un tonteria dificil en el foro de Javascript en Foros del Web. Hola! tengo que hacer una expresion regular que deje los espacios en blanco de una cadena en uno solo excepto los del principio y final, ...
  #1 (permalink)  
Antiguo 13/11/2010, 07:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: qwe
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Duda expresion regular! un tonteria dificil

Hola! tengo que hacer una expresion regular que deje los espacios en blanco de una cadena en uno solo excepto los del principio y final, por ejemplo:
cadena = "--------hola----que--tal-----estas--------?"
el resultado seria "--------hola-que-tal-estas--------?"

los guiones son espacios, es que la pagina los elimina
nose si me explico, gracias!
  #2 (permalink)  
Antiguo 13/11/2010, 10:05
 
Fecha de Ingreso: noviembre-2010
Ubicación: qwe
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Duda expresion regular! un tonteria dificil

tan dificil es?? como se niega algo en una expresion regular? eske me estoy volviendo loco
  #3 (permalink)  
Antiguo 13/11/2010, 11:16
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: Duda expresion regular! un tonteria dificil

si, no tienes idea de cuan dificil es! y maxime si te desesperas. para contestar tu pregunta como se niega algo en una expresion regular depende de que exactamente te refieres: denegar caracteres u omision por busqueda procedentes (mi mal traduccion de negative lookahead). a continuacion dos enlaces que hablan de ello: clases denegada y positive and negative lookahead. el manual es buen recurso pero tenga cuidado porque el material discute las expresiones regulares en su forma global y javascript no posee todas las caracteristicas que ahi se discute, por ejemplo el lookbehind.

de todos modos no creo que te sea de utilidad. la mejor solucion y la menos complicada para tu caso es utilizar el ancla word boundaries para buscar todos los espacios que existen entre dos palabras. para darte una idea de como es la expresion, /\word-boundary \espacios {uno o mas} \word-boundary/ global.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 13/11/2010 a las 11:21
  #4 (permalink)  
Antiguo 13/11/2010, 12:03
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Duda expresion regular! un tonteria dificil

A mi me resulta más fácil sin expresiones regulares:
Código PHP:
<script type="text/javascript">
var 
frase='--------hola----que--tal-----estas--------?';
var 
i=0;
var 
f=frase.length-1;
while(
frase.charAt(i)=='-'){
    
i++;    
}
while(
frase.charAt(f)=='-'){
    
f--;    
}
var 
f2=frase.substring(i,f);
while(
f2.indexOf('--')!=-1){
    
f2=f2.split('--').join('-');    
}
alert(frase.substring(0,i)+f2+frase.substring(f,frase.length));
</script> 

Última edición por Panino5001; 13/11/2010 a las 12:42
  #5 (permalink)  
Antiguo 13/11/2010, 14:00
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Duda expresion regular! un tonteria dificil

solo un apunte con respecto a la expresión que propone zerokilled. esto {uno o mas} es un cuantificador. el caso es que se puede cambiar por este otro {1,} o simplemente su abreviatura +. si no es así, por favor corrígeme
  #6 (permalink)  
Antiguo 13/11/2010, 14:03
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Duda expresion regular! un tonteria dificil

Sí pero si quisiera reflejar que pusiera la abreviación era más difícil de explicar xD , así entendió que ahí tiene que poner algo que diga una o más veces.
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
  #7 (permalink)  
Antiguo 13/11/2010, 14:28
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: Duda expresion regular! un tonteria dificil

@isabelm, estas en lo correcto, es un cuantificador y ambas formas que presentas son validas. no lo puse en la forma mas simple y/o correcta porque el codigo intentaba ser un pseudo-codigo o pseudo-expresion para que el autor lo analice. no es un "regaño" ni nada similar, solo un comentario... ¿vale? aparte de como _cronos dice, es mas explicativo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 13/11/2010, 14:54
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Duda expresion regular! un tonteria dificil

Cita:
Iniciado por zerokilled Ver Mensaje
@isabelm, estas en lo correcto, es un cuantificador y ambas formas que presentas son validas. no lo puse en la forma mas simple y/o correcta porque el codigo intentaba ser un pseudo-codigo o pseudo-expresion para que el autor lo analice. no es un "regaño" ni nada similar, solo un comentario... ¿vale? aparte de como _cronos dice, es mas explicativo.
no había pensado en ello, tenéis toda la razón

Etiquetas: dificil, 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 06:41.