Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Снова регулярки (https://javascript.ru/forum/misc/49495-snova-regulyarki.html)

Зосимов 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% , а если например два, то у последующих размер не меняется :(
Цитата:

Сообщение от Pavel M. (Сообщение 326505)
добавьте еще один 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


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