Foros del Web » Programando para Internet » Javascript »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de Javascript en Foros del Web. Hola amigos: Últimamente me he interesado en aprender sobre las expresiones regulares, y al usar el método test y el métod exec, consigo el mismo ...
  #1 (permalink)  
Antiguo 24/04/2003, 16:45
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Expresiones regulares

Hola amigos:

Últimamente me he interesado en aprender sobre las expresiones regulares, y al usar el método test y el métod exec, consigo el mismo resultado...

Por ejemplo, para chequear si una cadena tiene un asterisco se puede poner:
if (/\*/.exec("cade*na")) alert("tiene asterisco");
if (/\*/.test("cade*na")) alert("tiene asterisco");

Saludos
  #2 (permalink)  
Antiguo 24/04/2003, 17:06
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
también se puede usar el método search(), sólo que en vez de devolver true o false devuelve 0 ó -1
  #3 (permalink)  
Antiguo 24/04/2003, 17:18
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Mira, hace no hace mucho hice un script para verificar en mis foros que no pongan secuencias de caracteres demasiado largas que no deformen las tablas.

Pero claro, el script ha de contemplar que una secuencia larga de caracteres no sea una url o una url creada con el código de los foros, o una direccion de correo electrónico o si pones algún script. Entonces hice unas expresiones regulares para comprobar si esa cadena sin espacios se ajustaban a un patrón, y si se ajusta pues las ignora. En cambio las palabras más largas que no se ajusten al patrón las divide.

Si quieres echar un ojo a las Reg.Exp. que hice lo puedes ver aquí
  #4 (permalink)  
Antiguo 24/04/2003, 17:32
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 3 meses
Puntos: 38
¿Será posible que podamos armar entre todos una guia resumida de uso de expresiones regulares para incluirla en las FAQs?

Vamos a ver si desarrollamos aca el tema para subirlo cuando esté maduro...

¿que les parece?
  #5 (permalink)  
Antiguo 25/04/2003, 01:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Gracias a los dos:

Según la respuesta de tunait (Hola ), debo entender que no hay diferencias entre los dos métodos...

Lo de Search me pareció haberlo visto en algún sitio, pero quería ir aprendiendo las cosas poco a poco... Gracias por darme la explicación, y veremos si se pueden hacer ejemplos para fines didácticos.

kao (Hola a tí también ):
Sabes que yo me apunto a cualquier tiroteo de éstos, y más aún sobre temas que considero "asignaturas pendientes".

En la página de tunait, hay unos pequeños ejemplos para empezar. Yo también estaba haciendo una página (medio pirata ) ya que pillé algo de internet, y descaradamente lo copié en una página y le agregué un par de cosillas para hacer pruebas. Este es el link ...

También estoy usándolos en la búsqueda de colores (de otra discusión) ... Aquí

En esta última página, se crean las expresiones dinamicamente, para buscar colores, y luego se utiliza otro patrón estático. (Bueno, no es el tema, pero si interesa verlo, está bastante al final de la página)

Bien: Entonces voy a empezar a poner lo que he aprendido, para lo que comenta kao (pero en otro mensaje, para que esté más limpio)

... continúa
  #6 (permalink)  
Antiguo 25/04/2003, 01:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Expresiones Regulares:

Declaración:

como constante:

var patron = /expresión/;

// se escribe el patrón delimitado por barras normales
// el ejemplo busca la palabra expresión (tal como está escrita)

var otroPatron = new RegExp("regular");

// se crea dinámicamente con la sintaxis de creación de objetos
// El objeto es RegExp, y en este caso se busca regular

Métodos de las expresiones regulares:

test, exec (chequeo de la existencia del patrón) devuelve true/false

search igual que test/exec pero devuelve 0 ó -1

ejemplo de test usando el patrón definido antes:
var cadena = "Expresión";
if (patron.test(cadena)) alert("cadena = expresión");

Uso de caracteres especiales:
anteponiendo una barra inclinada inversa:
\/ = "/"
\n = fin de línea
\* = "*"

Además hay otros tales como:
? indica que el elemento anterior puede aparecer 0 ó 1 vez
* indica que el elemento anterior puede aparecer 0 ó varias veces
+ indica que el elemento anterior puede aparecer 1 ó más veces

Por ahora voy a parar porque puede ser que algunas de las cosas no estén del todo bien.

Saludos
  #7 (permalink)  
Antiguo 25/04/2003, 04:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Buscando en google encontré esta página , y me bajé el fichero ppt... Aquí pongo (copy & paste) algo que parece interesante:

Trabajar con expresiones regulares
exec. // busca en una cadena devuelve el resultado en un array.
unArray = miExp.exec(“hola”)
test. // busca en una cadena y devuelve true o false.
if (miExp.test(“hola”))
match. // es un método de String, igual que exec.
unArray = miCadena.match(“hola”)
search. // es un método de String, igual que test.
if (miCadena.search (unaCad))
replace. // es un método de String, busca y reemplaza.
miCad=unaCad.replace(miExp,$1,$2)
split. // divide una cadena en un array.
unArray = miCadena.split(“hola”)

Si encuentro algo más, lo iré añadiendo aquí...

Saludos
  #8 (permalink)  
Antiguo 16/10/2005, 09:13
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
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
  #9 (permalink)  
Antiguo 16/10/2005, 09:46
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
las regexp son de Perl si no me equivoco

aca hay una pagina de regexp en javascript:
http://javascript.espaciolatino.com/...pregulares.htm
__________________
Internet Explorer SuckS
Download FireFox
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 22:56.