获得身体内容的正则表达式

时间:2009-08-27 07:35:44

标签: javascript regex

我有一个这样的字符串:

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>";

我必须使用JavaScript中的正则表达式单独获取所有td元素内的内容。我的输出应该是:

var str="demo1 demo2"

怎么做?有什么想法吗?

5 个答案:

答案 0 :(得分:2)

怎么样

var str = document.body.innerText || document.body.textContent;

答案 1 :(得分:2)

把它们放在一起你会得到这个:

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 :(得分:1)

使用像/<td[^>]*>(.*?)</td>/这样的正则表达式来获取单元格的内容,然后用它们之间的空格连接它们。

答案 3 :(得分:1)

您无法使用regexp可靠地解析HTML。查找“&lt; td [^&gt;] *&gt;”可能适用于您提供的示例,但有些不同寻常,例如属性值中的“&gt;”或评论中的“&lt; td”,或者省略密切标签,会使它混淆。

最好的办法是更改服务器端,以便以更便于JavaScript读取的方式返回数据 - 通常是JSON。

答案 4 :(得分:0)

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(" ");