регулярное выражение javascript заменяет HTML - PullRequest
0 голосов
/ 25 ноября 2011

см. -> у меня есть следующий текст в переменной

var s = 

    "<html>
  <head>
    <style type="text/css" >     
      body{
 background:url(/a.png);
          }
    </style>
    <script src="2.js"></script>
    <script src="1.js"></script>
  </head>
  <body >
   {BODYCONTENT}
  </body>


</html>";

Теперь я хочу добавить некоторые данные сразу после закрытия <style> тега >.

Пример:

var mydata = "/n h1{a:b}/n";

Итак, я хочу

<style>/n h1{a:b}/n

это очень легко, если в теге style нет другого атрибута, но иногда могут быть и другие атрибуты, такие как type, id

например:

<style type="text/css" id="default_css_scope">
content
</style>

так что я не могу использовать как this s.replace("<style>","<style>".mydata);

Как я могу сделать это с регулярным выражением?

Ответы [ 5 ]

3 голосов
/ 25 ноября 2011

может быть, вам стоит попробовать это.Я думаю, что это решит вашу проблему.

 str= str.replace("</style>",mydata+"</style>");
1 голос
/ 25 ноября 2011

Пожалуйста, ознакомьтесь с этим. Блестящий пост от недавнего времени об использовании Regex с HTML.

Две самые разнообразные технологии, используемые вместе.

[см. Здесь] RegEx соответствует открытым тегам, кроме автономных тегов XHTML

1 голос
/ 25 ноября 2011

Предостережение: я не рекомендую использовать регулярные выражения для интенсивной работы с HTML.

Но в данном конкретном случае это может сойти с рук:

str = str.replace(/<style[^>]*>/, function(m) {
    return m + mydata;
});

Живой пример

0 голосов
/ 25 ноября 2011

Возможно, вы захотите взглянуть на HTML Agility Pack (бесплатная библиотека):

0 голосов
/ 25 ноября 2011

как то так

var start = html.indexOf("<script", 0); //find the index of the first script
start = html.indexOf(">", start); //Starting for that script tag, find the next >

var output = [html.slice(0, start), myData, html.slice(start)].join(''); //Add string to at that position.

Спасибо jAndy за его код сниппит

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...