Вход

Просмотр полной версии : Снова регулярки


Зосимов
15.08.2014, 14:57
есть строка text = '<img alt="" src="child.jpg" style="width: 640px; height:417px;">'
подскажите пожалуйста, как в ней заменить width на 100% и вообще убрать height?
можно как вариант вообще найти style="" и заменить все что в него входит
и вывести

пока слаб в регулярках юзал всякие примеры такого рода text = text.replace(/style="width:/g, 'TEST') alert(text) но не доходит (

спасибо

Pavel M.
15.08.2014, 16:12
если быстро

var s = '<img alt="" src="child.jpg" style="width: 640px; height:417px;">'.replace(/style=".+?"/, 'style="width:100%;"');

alert(s);

Зосимов
19.08.2014, 08:51
Pavel M.,
Спасибо.
А если допустим нет вообще атрибутов style как можно их добавить?
например: '<img alt="" src="child.jpg">'

Зосимов
19.08.2014, 09:31
или даже - если есть атрибут style то заменить (как выше) а если нет, то добавить

Pavel M.
19.08.2014, 14:34
добавьте еще один replace, например


var s = '<img alt="" src="child.jpg" style="width: 640px; height:417px;">'
.replace(/style=".+?"/, 'style="width:100%;"') // заменит style, если есть
.replace(/<img (?!.*style=)/, '<img style="width:100%;" '); // добавит style, если нет

alert(s);

s = '<img alt="" src="child.jpg">'
.replace(/style=".+?"/, 'style="width:100%;"') // заменит style, если есть
.replace(/<img (?!.*style=)/, '<img style="width:100%;" '); // добавит style, если нет

alert(s);

Зосимов
20.08.2014, 08:11
Pavel M.,
я так понял можно и так <img (?!.*style=)|style=".+?" :)
спасибо!

Зосимов
16.09.2014, 10:32
вот что странно - если на странице один рисунок, то он принимает размер 100% , а если например два, то у последующих размер не меняется :(
добавьте еще один replace, например


var s = '<img alt="" src="child.jpg" style="width: 640px; height:417px;">'
.replace(/style=".+?"/, 'style="width:100%;"') // заменит style, если есть
.replace(/<img (?!.*style=)/, '<img style="width:100%;" '); // добавит style, если нет

alert(s);

s = '<img alt="" src="child.jpg">'
.replace(/style=".+?"/, 'style="width:100%;"') // заменит style, если есть
.replace(/<img (?!.*style=)/, '<img style="width:100%;" '); // добавит style, если нет

alert(s);

tsigel
16.09.2014, 10:34
всем регуляркам поставь флаг "g"

например /trololo/g