Ver Mensaje Individual
  #21 (permalink)  
Antiguo 02/12/2015, 15:57
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 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