Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   регулярные выражения (https://javascript.ru/forum/events/30336-regulyarnye-vyrazheniya.html)

syegorius 01.08.2012 00:59

регулярные выражения
 
доброе время суток

подскажите как по "простому" очистить все "<" и ">" на "&lt;" и "&rt;" соответственно внутри тегов. то есть например:

<span>hello< Привет<img src="1.jpg"/>><<span>></span><<<</span>


заменить на:

<span>hello&lt; Привет<img src="1.jpg"/>&rt;&lt;<span>&rt;</span>&lt;&lt;&lt;</span>


заранее спасибо за помощь!

Deff 01.08.2012 01:04

syegorius,
Изначально - контент на странице у клиента или речь о чисто строке ?

syegorius 01.08.2012 01:14

речь идет именно о строке. т.е. способ:

var elements=document.getElemensByTagName('tagname')
for(var i=0;i<elements.length;i++)elements[i].innerHTML.replace(/>/,'&rt;')


и другие подобные решения не подходят...

Apollo_440 01.08.2012 01:19

Deff,
разница в вашем вопросе всего в одну - две строки.
- document.getElement ...
- .innerHTML

методом .replace

var a = "<blalalal>";
a = a.replace(/</gi,"&lt;").replace(/>/g,"&rt;");
alert(a);


a - нужная строка. Если ее нет - получаем через getElement... и получаем .innerHTML;

Apollo_440 01.08.2012 01:21

syegorius,
забыли вернуть на место html. Вы лишь заменили символы в строке, но не вставили в тег.
Надо вот так:

var elements=document.getElemensByTagName('tagname');
for(var i=0;i<elements.length;i++){
var a = elements[i].innerHTML;
a = a.replace(/</gi,"&lt;").replace(/>/g,"&rt;");
}

syegorius 01.08.2012 01:33

вы не совсем правильно меня поняли... вверху я просто описался...

мне нужно очистить именно строку, а не содержимое элемента или элементов...

мне нужно регулярное выражение типа такого:

/(<\s*\/*\s*(span)|(div)[^>]*>)*(.*(>).*|.*(<).*)(<\s*\/*\s*(span)|(div)[^>]*>)*/ig


но вышеприведенное регулярное выражение не работает в моем случае

Deff 01.08.2012 01:44

Apollo_440,
Разница в моем вопросе - я могу выпарсить скриптом контент тега - а не регуляркой

syegorius 01.08.2012 01:49

да скриптом и я могу

Deff 01.08.2012 01:59

Цитата:

Сообщение от syegorius
да скриптом и я могу

:thanks:

var Zz='<span>hello< Привет<img src="1.jpg"/>><<span>></span><<<</span>'

var toConvertedXML = (function( b ){
    return function( xmlTxt ) {
        b.innerHTML = xmlTxt;
        return b
    }
})( document.createElement( 'b' ) );

var Z = toConvertedXML(Zz)
var x=Z.innerHTML.toString()
alert(x)


Часовой пояс GMT +3, время: 07:09.