如何使用javascript将<p> <span> Hello </span> </p>拆分为<span> Hello </span>

时间:2010-08-29 02:42:53

标签: javascript string split

如何使用javascript将<p><span>Hello</span></p>拆分为<span>Hello</span>

var text = "<p><span>Hello</span></p>";

请记住:我不知道包含<p>的内容,我不知道<p>是否包含任何属性

我找到了答案!

var patt=/^<p.*?>(.*)<\/p>$/i;
var result=patt.exec(text);
alert(result[1]); 

谢谢你的铃声&amp; W3Schools的 http://www.w3schools.com/jsref/jsref_obj_regexp.asp

但有问题!它不适用于

aa<p><span>Hello</span></p>aa

4 个答案:

答案 0 :(得分:12)

不要对此进行字符串操作,请使用DOM。

// create a dummy container div element
var tempDiv = document.createElement('div');
// insert the desired html inside this container
tempDiv.innerHTML = "<p><span>Hello</span></p>";
// find the first para, and get its html
tempDiv.getElementsByTagName("p")[0].innerHTML; // contains "<span>Hello</span>"

Try this snippet

如果您使用的是jQuery这样的框架,可以使用:

$("<p><span>Hello</span></p>").html()

Try this snippet

答案 1 :(得分:1)

负责删除p属性

的正则表达式
var new = text.replace(/^<p[^>]*>(.*)<\/p>$/i, "$1");

.*?

的版本
var new = text.replace(/^<p.*?>(.*)<\/p>$/i, "$1");


如果<pre><param>可以启动text,则必须阻止匹配

var new = text.replace(/^<p\b.*?>(.*)<\/p>$/i, "$1");


修改以回答您的第二个问题

删除

之前/之后的内容
var new = text.replace(/^.*<p\b[^>]*>(.*)<\/p>.*$/i, "$1");

但是如果你要删除所有<p...>和所有</p>,你应该使用这两行

var new = text.replace(/<p\b.*?>/ig, "");
new = text.replace(/<\/p>/ig, "");

答案 2 :(得分:0)

你真正想要什么?

  • 您可以使用子字符串来解决此问题:text.substr(3, 18)
  • 您可以使用正则表达式:text.match(/<span>([^<]+)<\/span>/)
  • 你可以坚持这是DOM并解析它。

你需要更好地解释这个问题。

答案 3 :(得分:-1)

注意我使用了p></p而不是完整标记。如果您使用完整标记,我不确定拆分是否会为您提供一个空的第一个索引的数组。考虑到相当差的问题措辞,我太懒了测试它。

var text = "<p><span>Hello</span></p>";
var foo = text.split("p>");
var bar = foo[1].split("</p");
alert(bar[0]);