Регулярное выражение для получения содержимого тела - PullRequest
0 голосов
/ 27 августа 2009

У меня есть такая строка:

var str="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body><table><tr><td style="color:#FF0000">demo1</td><td style="color:#FF0000">demo2</td></tr></table></body></html>";

Мне нужно получить содержимое всех элементов td, используя регулярные выражения в JavaScript. Мой вывод должен быть:

var str="demo1 demo2"

Как это сделать? Есть идеи?

Ответы [ 5 ]

2 голосов
/ 27 августа 2009

Собрав все вместе, вы получите вот это:

var str='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body><table><tr><td style="color:#FF0000">demo1</td><td style="color:#FF0000">demo2</td></tr></table></body></html>';
var resultM=[], pattern=/<td[^>]*>(.*?)<\/td>/g, match;
while(match=pattern.exec(str))
{
resultM.push(match[1]);
}
var result=resultM.join(" ");
console.log(result); // demo1 demo2
2 голосов
/ 27 августа 2009

а как же

var str = document.body.innerText || document.body.textContent;
1 голос
/ 27 августа 2009

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

] *>» может работать для приведенного вами примера, но что-то необычное, например «>» в ​​значении атрибута, «

Лучше всего изменить серверную часть так, чтобы она возвращала данные так, чтобы JavaScript было удобнее читать - обычно это JSON.

1 голос
/ 27 августа 2009

Используйте регулярное выражение, например /<td[^>]*>(.*?)</td>/, чтобы получить содержимое ячеек, а затем объедините их с пробелами между.

0 голосов
/ 27 августа 2009
var str='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body><table><tr><td style="color:#FF0000">demo1</td><td style="color:#FF0000">demo2</td></tr></table></body></html>';
var resultM=new Array(), pattern=/<td[^>]*>(.+)<\/td>/, match;
while(match=pattern.exec(str))
{
resultM.push(match[1]);
}
var result=resultM.join(" ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...