Expresión regular en javascript para quitar tags

Iniciado por astinx, 23 Julio 2012, 03:38 AM

0 Miembros y 1 Visitante están viendo este tema.

astinx

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.
La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando

Spider-Net

Código (javascript) [Seleccionar]
<script>
function strip(html)
{
    var tmp = document.createElement("DIV");
    tmp.innerHTML = html;
    return tmp.textContent || tmp.innerText;
}
</script>

~ Yoya ~

Este patron eliminara todos los tags.

http://jsfiddle.net/srUdp/
Código (javascript) [Seleccionar]
var Cadena = 'asd<strong>asd</strong> <strong>asd</strong> <strong>asd</strong>asd asd<strong>asd</strong>asd';

var result = Cadena.replace(/(?:<[^>]+>)/gi, '');
document.write(result);


Result:
asdasd asd asdasd asdasdasd

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

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

astinx

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
La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando