我有一个这样的字符串:
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"
怎么做?有什么想法吗?
答案 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(" ");