Ver Mensaje Individual
  #8 (permalink)  
Antiguo 16/10/2005, 09:13
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Hola todos :

Algo que me gusta de las regular expressions es la capacidad de usar rangos. Y no me refiero solo a los nativos como

/\d/

que busca cualquier dígito (0 a 9), sino también a los que toma del ordenamiento unicode.

Por ejemplo, si queremos reemplazar todas las aes acentuadas de una cadena por "a", podemos buscar dónde empieza y donde termina en el ASCII la serie

...Þßàáâãäåæç...

y usar /[à-å]/

Código:
<input style = "font-family:serif; font-size:20pt;" type = "button" 
onclick = "this.value = this.value.replace(/[à-å]/g , 'a');" value = "àzáyâxãwävå" />
Cabe aclarar que la "g" es por "global", es decir, que busca en toda la cadena y no se detiene al encontrar la primera coincidencia.
Seguramente se verá en más detalle después, cuando el tema llegue a los switches.

Aprovecho para hacer una aclaración sobre search, en realidad no devuelve 0 ó -1, sino el índice de la primera aparición en una cadena (por supuesto, no acepta global).

Código:
<input style="font-family:serif; font-size:20pt;" type="button" 
onclick="this.value = 'La primera \'b\' esta en el index = '+this.value.search(/b/);" 
value="abacaba" />
Y otra sobre

Cita:
replace. // es un método de String, busca y reemplaza.
miCad=unaCad.replace(miExp,$1,$2)
Los $1,$2 no se refieren en ese caso a cadenas que terminen en "1" y "2", sino que los números (del 1 al 9) son los últimos patrones que se usaron -entre "(" y ")"- y están en la "memoria" del escript.

Código:
<input style="font-family:serif; font-size:20pt;" type="button" 
onclick="this.value = this.value.replace(/(ALFA )(MIKE )(ZULU )/, '$3 $2 $1');" 
value="ALFA MIKE ZULU " />
Ésto no parece muy "javascript". Seguramente está tomado de otro lenguaje. ¿Alguien sabe de dónde salieron las expresiones regulares?.

saludos

furoya