Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Consulta rapida sobre expresiones regulares

Estas en el tema de Consulta rapida sobre expresiones regulares en el foro de Javascript en Foros del Web. Hola a todos necesito tres expresiones regulares que detecte en una cadena lo siguiente: Código: [URL name="Aqui va cualquiera cosa"]enlace[/URL] [yotube]enlace[/yotube] [img]enlace[/img] Creo que es ...
  #1 (permalink)  
Antiguo 15/11/2015, 15:19
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Consulta rapida sobre expresiones regulares

Hola a todos necesito tres expresiones regulares que detecte en una cadena lo siguiente:

Código:
[URL name="Aqui va cualquiera cosa"]enlace[/URL]
[yotube]enlace[/yotube]
[img]enlace[/img]
Creo que es obvio lo que quiero jeje, simplemente lo que no se hacer es la expresion regular para que me detecte esas tres etiquetas (¿me recomiendan mejor jquerypara esto?)

Muchas gracias
Saludos

PD: pongo yotube porque me detecta la etiqueta youtube
  #2 (permalink)  
Antiguo 16/11/2015, 07:18
 
Fecha de Ingreso: diciembre-2014
Mensajes: 13
Antigüedad: 5 años
Puntos: 0
Respuesta: Consulta rapida sobre expresiones regulares

si lo que quieres es que te devuelvan el valor string del "enlace" , vas a tener que parsear el texto, y mediante el control de llaves [] sacar el indice que entre ellas.

Código Javascript:
Ver original
  1. var url0 = "[url*]pruevaURL[/url*]";
  2.  
  3. var pasoUno = url0.split("]");
  4. var pasoDos = pasoUno[1].split("[");
  5.  
  6. var enlaceString = pasoDos[0];
  7. console.log(enlaceString) // devuelve "pruevaURL"

Última edición por Martelo; 16/11/2015 a las 07:24
  #3 (permalink)  
Antiguo 16/11/2015, 08:13
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por Martelo Ver Mensaje
si lo que quieres es que te devuelvan el valor string del "enlace" , vas a tener que parsear el texto, y mediante el control de llaves [] sacar el indice que entre ellas.

Código Javascript:
Ver original
  1. var url0 = "[url*]pruevaURL[/url*]";
  2.  
  3. var pasoUno = url0.split("]");
  4. var pasoDos = pasoUno[1].split("[");
  5.  
  6. var enlaceString = pasoDos[0];
  7. console.log(enlaceString) // devuelve "pruevaURL"
Hola gracias por responder, funciona perfectamente pero si se repiten las etiquetas no:

Código Javascript:
Ver original
  1. var url0 = "[url*]pruevaURL[/url*] otro texto [url*]pruevaURL2[/url*]";
  2.  
  3. var pasoUno = url0.split("]");
  4. var pasoDos = pasoUno[1].split("[");
  5.  
  6. var enlaceString = pasoDos[0];
  7. console.log(enlaceString) // devuelve "pruevaURL"

Saludos y gracias
  #4 (permalink)  
Antiguo 16/11/2015, 08:56
 
Fecha de Ingreso: diciembre-2014
Mensajes: 13
Antigüedad: 5 años
Puntos: 0
Respuesta: Consulta rapida sobre expresiones regulares

tienes que usar tantas varaisbles url como etiquetas, url0, url1 url2 ... ect. aunque podria hacerse tambien sin mas variables pero creo que en tu caso lo que necesitas es aprender a manejar javscript de forma menos coloquial.
Todo lo que deseas lo puedes manejar mediante indices de arrays, así que indaga sobre como tratar arrays.
  #5 (permalink)  
Antiguo 16/11/2015, 10:41
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

Usa el método replace() y expresiones regulares
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 16/11/2015, 11:51
 
Fecha de Ingreso: diciembre-2014
Mensajes: 13
Antigüedad: 5 años
Puntos: 0
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por IsaBelM Ver Mensaje
Usa el método replace() y expresiones regulares
podrias ilustrarlo? , no tengo muy claro como usar replace() en ese caso.
  #7 (permalink)  
Antiguo 16/11/2015, 12:36
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por Martelo Ver Mensaje
tienes que usar tantas varaisbles url como etiquetas, url0, url1 url2 ... ect. aunque podria hacerse tambien sin mas variables pero creo que en tu caso lo que necesitas es aprender a manejar javscript de forma menos coloquial.
Todo lo que deseas lo puedes manejar mediante indices de arrays, así que indaga sobre como tratar arrays.
Hola, si necesito mejorar javascript, pero en este caso seria inviable crear tantas variables porque las etiquetas pueden ser tantas como decida el usuario

Cita:
Iniciado por IsaBelM Ver Mensaje
Usa el método replace() y expresiones regulares
Si, desde un principio quería usar expresiones regulares pero no estoy muy familiarizado con ellas.

Saludos
  #8 (permalink)  
Antiguo 17/11/2015, 06:06
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

es sencillo
Cita:
var txt = '[URL name="Aqui va cualquiera cosa"]enlace[/URL]' +
'un texto cualquiera' +
'[yotube]enlace[/yotube]' +
'otro texto cualquiera' +
'[img]enlace[/img]';

console.log(txt.replace(/\[[^\]]+\]/gi, ' '));
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #9 (permalink)  
Antiguo 17/11/2015, 09:44
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por IsaBelM Ver Mensaje
es sencillo
Hola, gracias por responder, es mas o menos lo que necesito habria manera de distinguir cuando es un URL, Youtube o IMG para meterlo en un if?

Lo que pretendo hacer es lo siguiente:

Código:
[URL name="Aqui va cualquiera cosa"]enlace[/URL]

//Transformarlo a:

<a href="enlace">Aqui va cualquiera cosa</a>
Saludos y gracias
  #10 (permalink)  
Antiguo 18/11/2015, 09:17
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
var txt = '[URL name="Aqui va cualquiera cosa"]enlace[/URL] ' +
'un texto cualquiera ' +
'[yotube]enlace[/yotube] ' +
'otro texto cualquiera ' +
'[img]enlace[/img]';



txt = txt.replace(/\[(url([\sa-z]+="(.*))")\]([^\[]+)/gi, '<a href="$4">$3');
txt = txt.replace(/\[(YOTUBE)\]([^\[]+)/gi, '<iframe width="560" height="315" src="$2" frameborder="0" allowfullscreen>');
txt = txt.replace(/\[(IMG)\]([^\[]+)/gi, '<img src="$2"');


txt = txt.replace(/\[(\/URL)\]/gi, '</a>');
txt = txt.replace(/\[(\/YOTUBE)\]/gi, '</iframe>');
txt = txt.replace(/\[[^\]]+\]/gi, ' />');

console.log(txt);
el reemplazo que te he marcado ha de estar siempre al final
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 04/12/2015 a las 09:03 Razón: corregir la expresión por que la propiedad "name" puede contener caracteres alfanumericos
  #11 (permalink)  
Antiguo 22/11/2015, 09:32
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por IsaBelM Ver Mensaje
el reemplazo que te he marcado ha de estar siempre al final
Hola, perdona por tardar en responder no he tenido mucho tiempo para ponerme con mi proyecto.
He probado el codigo pero pasa una cosa, la ultima linea que marcaste subttituye todo por /> en vez de poner por ej <a href="url">texto</a>
Saludos y gracias por tu paciencia
  #12 (permalink)  
Antiguo 22/11/2015, 09:53
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

Cómo?? Qué has probado?? Sólo esa línea de código??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #13 (permalink)  
Antiguo 22/11/2015, 10:09
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por IsaBelM Ver Mensaje
Cómo?? Qué has probado?? Sólo esa línea de código??
Noo, he probado copiando y pegando todo el codigo que me pasate
[edito]
alomejor el problema es por que tu txt concatenas con los +(creo que se llama asi) mientras que en mi codigo es todo texto plano

Código:
var txt = '[URL name="Aqui va cualquiera cosa"]enlace[/URL] ' +
'un texto cualquiera ' +
'[yotube]enlace[/yotube] ' +
'otro texto cualquiera ' +
'[img]enlace[/img]';


var txt = '[URL name="Aqui va cualquiera cosa"]enlace[/URL] un texto cualquiera [yotube]enlace[/yotube] otro texto cualquiera [img]enlace[/img]';

Última edición por jonyjdv; 22/11/2015 a las 12:01
  #14 (permalink)  
Antiguo 22/11/2015, 13:21
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

no, eso es indiferente. para javascript es lo mismo uno que otros.
muestranos lo que tienes
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #15 (permalink)  
Antiguo 30/11/2015, 08:52
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por IsaBelM Ver Mensaje
no, eso es indiferente. para javascript es lo mismo uno que otros.
muestranos lo que tienes
Hola, perdon por el tiempo que he tardado en responder, despues de revisar el codigo me di cuenta de que era un error mio.

Una ultima pregunta, en la bbdd se guarda un enlace de youtube tal y como se muestra en la pagina tipo: https://www.youtube.com/watch?v=variable_video para reproducirla en el iframe debe tener esta estructura https://www.youtube.com/embed/variable_video como puedo hacer con la expresion regular de youtube para cojer la variable y poder incrustarla en el iframe.

Muchas gracias por tu gran ayuda

saludos
  #16 (permalink)  
Antiguo 30/11/2015, 08:53
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Cita:
Iniciado por jonyjdv Ver Mensaje
Hola, perdon por el tiempo que he tardado en responder, despues de revisar el codigo me di cuenta de que era un error mio en las variables.

Una ultima pregunta, en la bbdd se guarda un enlace de youtube tal y como se muestra en la pagina tipo: https://www.youtube.com/watch?v=variable_video para reproducirla en el iframe debe tener esta estructura https://www.youtube.com/embed/variable_video como puedo hacer con la expresion regular de youtube para cojer la variable y poder incrustarla en el iframe.

Muchas gracias por tu gran ayuda

saludos
Hola, perdon por el tiempo que he tardado en responder, despues de revisar el codigo me di cuenta de que era un error mio en las variables.

Una ultima pregunta, en la bbdd se guarda un enlace de youtube tal y como se muestra en la pagina tipo: https://www.youtube.com/watch?v=variable_video para reproducirla en el iframe debe tener esta estructura https://www.youtube.com/embed/variable_video como puedo hacer con la expresion regular de youtube para cojer la variable y poder incrustarla en el iframe.

Muchas gracias por tu gran ayuda

saludos
  #17 (permalink)  
Antiguo 30/11/2015, 12:13
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

Has de hacer la conversión antes. Usa los métodos substring() e indexof()

Pd: Te has planteado hacer todo del lado del servidor??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 30/11/2015 a las 12:48
  #18 (permalink)  
Antiguo 02/12/2015, 12:57
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Hola, si me lo he planteado pero los datos los recibo desde un json asique es mas comodo para mi hacerlo de esta forma lo que pasa es que las expresiones regulares no se me dan bien porque apenas he trabajado con ellas (por no decir nada)
  #19 (permalink)  
Antiguo 02/12/2015, 13:12
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

vale he conseguido con esos dos metodos cojer el trozo de la URL que me interesa ahora tendria que volver adaptar la expresion regular seria algo similar como con el URL he intentado hacerlo por mi cuenta pero no doy, desde la bbdd obtengo lo siguiente:
Código:
[YOTUBE LINK="kJWbp13W5s0"]https://www.youtube.com/watch?v=kJWbp13W5s0[/YOTUBE]
lo que me interesa cojer lo que pone en link y moverlo al src
Código:
var = var.replace(/\[(YOTUBE%([\sa-z\xc0-\xff]+="([\sa-zñ]+))")\]([^\[]+)/gi, '<iframe width="560" height="315" src="'https://www.youtube.com/embed/'$2" frameborder="0" allowfullscreen>');

var = var.replace(/\[(\/YOTUBE)\]/gi, '</iframe>');
algo estoy haciendo mal entre otras cosas seguro que tengo mal la sintaxis donde va la variable src
  #20 (permalink)  
Antiguo 02/12/2015, 13:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Consulta rapida sobre expresiones regulares

No están añadidos los caracteres numéricos (\d).
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #21 (permalink)  
Antiguo 02/12/2015, 15:57
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 8 años, 10 meses
Puntos: 206
Respuesta: Consulta rapida sobre expresiones regulares

Dicen que cuando un programador novato tiene un problema, y piensa que la solución es usar expresiones regulares, entonces tiene dos problemas.

Pero con ganas, experiencia, un poco de cuidado, y mucho sex-appeal pueden hacer cosas como esta:

Código Javascript:
Ver original
  1. var Reemplazator = {
  2.   MATCHES : [
  3.     {
  4.       REG : /\[youtube\](.*)\[\/youtube\]/ig,
  5.         TPL : '<iframe type="text/html" width="640" height="390" src="http://www.youtube.com/embed/$1" frameborder="0"></iframe>'
  6.     },
  7.     {
  8.       REG : /\[img\](.*)\[\/img\]/ig,
  9.         TPL : '<img src="$1" />'
  10.     },
  11.     {
  12.       REG : /\[url name="([^"]*)"\](.*)\[\/url\]/ig,
  13.         TPL : '<a href="$2">$1</a>'
  14.     }
  15.   ],
  16.   parse : function (txt) {
  17.     for (var i = 0, n = Reemplazator.MATCHES.length; i < n; i++) {
  18.       var rule = Reemplazator.MATCHES[i];
  19.       console.log(txt.match(rule.REG));
  20.       txt = txt.replace(rule.REG, rule.TPL);
  21.     }
  22.     return txt;
  23.   }
  24. };

http://jsfiddle.net/marlanga/9axyz13x/
Veo que en tu último mensaje estuviste a punto de lograrlo. Bien hecho, joven padawan.

Posdata:
Una vuelta de tuerca a la función parse, porque me gusta complicar las cosas:
Código Javascript:
Ver original
  1. parse : function (txt) {
  2.     return Reemplazator.MATCHES.reduce(function (value, rule) { return value.replace(rule.REG, rule.TPL); }, txt);
  3. }

http://jsfiddle.net/marlanga/9axyz13x/1/

Última edición por marlanga; 02/12/2015 a las 16:15
  #22 (permalink)  
Antiguo 05/12/2015, 07:43
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 5 años, 4 meses
Puntos: 1
Respuesta: Consulta rapida sobre expresiones regulares

Vale si el problema era la \d muchas gracias por tu ayuda IsaBelM.

Gracias por tu aporte marlanga siempre quise ahondar mas en las expresiones regulares pero por falta de tiempo nunca me he puesto. Revisare tu codigo con detenimiento

Saludos

Etiquetas: expresiones, rapida, regulares
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:39.