Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: astinx en 23 Julio 2012, 03:38 am



Título: Expresión regular en javascript para quitar tags
Publicado por: astinx en 23 Julio 2012, 03:38 am
Hola que tal, he estado investigando acerca de como podría armar una expresión regular que haga lo siguiente:

En base a un string de html tipo "asd<strong>asd</strong> <strong>asd</strong> <strong>asd</strong>asd asd<strong>asd</strong>asd"

que al utilizar esta expresión regular me quite las tags de las palabras en donde haya estilos parciales, es decir,

asd<strong>asd</strong> se vería como asdasd como vemos tenemos solo parte de la palabra en negrita, lo que quiero es hacer un replace por "" y que me quede asdasd

<strong>asd</strong> se vería como asd como vemos todo esta en negrita, no hay ninguna letra que sobresalga y no este en negrita, por ende queda tal cual esta.

<strong>asd</strong>asd se vería como asdads como vemos el ultimo asd no esta en negrita y el primero si, por ende quiero quitarle los tags y que quede como asdasd

asd<strong>asd</strong>asd se veria como asdasdasd por ende tenemos un asd que esta en negrita entremedio y dos asd a los laterales de la palabra que no están en negrita, así que quiero sacar los tags y que me quede como asdasdasd

Esa sería la lógica de mi expresión regular, he estado buscando por varios sitios, leyendo bastante, pero no encuentro la forma de machear las tags y no las palabras en los laterales. Si alguien conoce alguna expresión regular similar, que pueda servir de inspiración, bienvenido sea.

Muchas gracias por detenerse a leer, saludos.


Título: Re: Expresión regular en javascript para quitar tags
Publicado por: Spider-Net en 23 Julio 2012, 12:37 pm
Código
  1. <script>
  2. function strip(html)
  3. {
  4.     var tmp = document.createElement("DIV");
  5.     tmp.innerHTML = html;
  6.     return tmp.textContent || tmp.innerText;
  7. }
  8. </script>


Título: Re: Expresión regular en javascript para quitar tags
Publicado por: ~ Yoya ~ en 24 Julio 2012, 05:45 am
Este patron eliminara todos los tags.

http://jsfiddle.net/srUdp/
Código
  1. var Cadena = 'asd<strong>asd</strong> <strong>asd</strong> <strong>asd</strong>asd asd<strong>asd</strong>asd';
  2.  
  3. var result = Cadena.replace(/(?:<[^>]+>)/gi, '');
  4. document.write(result);

Result:
Código:
asdasd asd asdasd asdasdasd

Te recomiendo esta pagina para que testes tu expresiones regulares -> http://regex.larsolavtorvik.com/

Saludos.


Título: Re: Expresión regular en javascript para quitar tags
Publicado por: astinx en 24 Julio 2012, 07:06 am
El tema es que yo no quiero borrar todos los tags, solo quiero borrar los tags strong de las palabras (es decir split(" ")) en las cuales sobresalen caracteres hacia los costados. El resultado tendria que ser:

Si tengo:

asdadssd  asdasdad  asdadsasd   asdasdad asdasdasd

Me tendría que quedar:

asdadssd  asdasdad  asdadsasd   asdasdad asdasdasd

Dado que solo el segundo "asdasdasd" es la unica palabra en todo el string cuyo estilo se propaga por toda la palabra y no toma solo parte de la palabra.

No se si me explico bien, igualmente tal vez tu expresión regular me sea de ayuda. El problema es que para determinar con expresiones regulares, si determinado string precede o no al tag, tendría que usar (?=pattern), pero como resultado terminaria reemplazando los caracteres excedentes y no el tag. :S