如何使用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
答案 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>"
如果您使用的是jQuery这样的框架,可以使用:
$("<p><span>Hello</span></p>").html()
答案 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>/)
你需要更好地解释这个问题。
答案 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]);