Regex: как добраться, содержание от внутреннего тега (используйте JavaScript)?

содержание страницы:

aa<b>1;2'3</b>hh<b>aaa</b>..
 .<b>bbb</b>
blabla..

я хочу получить результат:

1;2'3aaabbb

тег соответствия <b> и </b>

как записать этому regex использование JavaScript?спасибо!

5
задан Alan Moore 20 September 2010 в 16:49
поделиться

3 ответа

Лазянно ,

Если и только если :

  1. у вас есть прочтите сообщение SLaks (а также предыдущее сообщение статья, которую он ссылается на ), и
  2. вы полностью понимаете многочисленные и чудесные способы , которыми извлечение информации из HTML с использованием регулярных выражений может нарушить , и
  3. вы уверены, что ни одна из проблем не применима в вашем случае (например, вы можете гарантировать, что ваш ввод никогда не будет содержать вложенных, несовпадающих и т. д. / теги или вхождения или в или в комментарии < ! - .. -> теги и т. Д.)
  4. вы абсолютно и однозначно хотите продолжить извлечение регулярных выражений

... затем используйте:

var str = "aa<b>1;2'3</b>hh<b>aaa</b>..\n.<b>bbb</b>\nblabla..";

var match, result = "", regex = /<b>(.*?)<\/b>/ig;
while (match = regex.exec(str)) { result += match[1]; }

alert(result);

Результат:

1;2'3aaabbb
9
ответ дан 18 December 2019 в 07:08
поделиться

Вот пример без зависимости от jQuery:

// get all elements with a certain tag name
var b = document.getElementsByTagName("B");

// map() executes a function on each array member and
// builds a new array from the function results...
var text = b.map( function(element) {
  // ...in this case we are interested in the element text
  if (typeof element.textContent != "undefined")
    return element.textContent; // standards compliant browsers
  else
    return element.innerText;   // IE
});

// now that we have an array of strings, we can join it
var result = text.join('');
2
ответ дан 18 December 2019 в 07:08
поделиться

Вы не можете анализировать HTML с помощью регулярных выражений .

Вместо этого вы должны использовать Javascript DOM.

Например (с использованием jQuery):

var text = "";
$('<div>' + htmlSource + '</div>')
    .find('b')
    .each(function() { text += $(this).text(); });

Я заключаю HTML в тег

, чтобы найти как вложенные, так и невложенные элементы .

8
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: