как удалить теги с помощью регулярных выражений JavaScript - PullRequest
1 голос
/ 07 января 2010

У меня есть строка JavaScript, содержащая HTML, например:

<div>
 <div class="a">
  content1
 </div>
 content 2
 <div class="a">
  <b>content 3</b>
 </div>
</div>

и я хочу удалить элементы div класса = "a", но оставить их содержимое. В Python я бы использовал что-то вроде:

re.compile('<div class="a">(.*?)</div>', re.DOTALL).sub(r'\1', html)

Что является эквивалентом использования регулярных выражений Javascript?

Ответы [ 3 ]

5 голосов
/ 07 января 2010

Почему вы не используете правильные методы DOM? С небольшой помощью jQuery это очень просто:

var contents = $('<div><div class="a">content1</div>content 2<div class="a"><b>content 3</b></div></div>');

contents.find('.a').each(function() {
    $(this).replaceWith($(this).html());
});
2 голосов
/ 07 января 2010

Вы можете достичь этого с помощью регулярных выражений в JavaScript

var html = '<div> <div class="a"> content1 </div> <div class="a"> content1 </div> ... </div>';
var result = html.replace(/<div class="a">(.*?)<\/div>/g, function(a,s){return s;});
alert(result);

Метод RegExp replace принимает два параметра - первый является реальным, а второй - заменой. Поскольку число замен не одно, а неизвестно, можно использовать функцию.

0 голосов
/ 07 января 2010

Если вы хотите сделать это в Javascript, я предполагаю, что вы запускаете его в веб-браузере и что «строка javascript», на которую вы ссылаетесь, была каким-то образом извлечена из DOM. Если оба эти случая верны, то я бы сказал, что было бы неплохо использовать проверенную и протестированную библиотеку javascript, такую ​​как JQuery (есть и другие, но я их не использую, поэтому могу ' комментирую) JQuery позволяет с относительной легкостью выполнять манипуляции с DOM на лету, как вы описываете ...

$('div.a').each(function(){$(this).replaceWith($(this).html());});

JQuery, безусловно, является одним из тех инструментов, которые приносят дивиденды - непродолжительная кривая обучения и огромные возможности.

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