2014-03-14 112 views
7

我制作了一个div标记并将其内容存储在一个变量中。如果此标签包含p,b或任何其他标签,则应将其从字符串中删除。我怎样才能做到这一点?如何使用Javascript/jQuery从div内容中去除HTML标签?

+0

添加的jsfiddle向我们展示[从文本JavaScript的HTML地带]的一些代码 – Abhidev

+0

可能的复制(http://stackoverflow.com/questions/822452/strip-html-from-text-javascript ) – nhahtdh

回答

15

使用正则表达式。

var regex = /(<([^>]+)>)/ig 
var body = "<p>test</p>" 
var result = body.replace(regex, ""); 

alert(result); 

这里是DEMO

希望这有助于。

+0

+1,我测试了这个...它真的很棒... http://jsfiddle.net/cjramki/Efu4f/ –

+0

标记为已解决。如果这有帮助 – UmarKashmiri

+0

我应该在你的答案中添加小提琴演示吗?我认为这会改善你的答案... –

8

你可以按照这个例子

var stringContent = "<p>Hi dear</p><p>Wish you a happy birthday</p>"; 

var text = $(stringContent).text(); 
+0

这引发错误,例如字符串'dsdsds [' – xMort

0

解决方案使用jQuery:

var content = "<p>Dear Andy,</p><p>This is a test message.</p>"; 

var text = $(content).text(); 

解决方案使用JavaScript:

function removeTags(){ 
    var txt = document.getElementById('myString').value; 
    var rex = /(<([^>]+)>)/ig; 
    alert(txt.replace(rex , "")); 

} 

而且看起来这个链接: Strip HTML Tags in JavaScript

1

使用普通的JavaScript,你可以做到这一点作为

string.replace(/(<([^>]+)>)/ig,""); 

我想,这大概比的.text()方法更快。

5

这是更安全:

function plaintext(html){ 
    return $("<div/>").html(html).text(); 
} 
+1

这是一个超级干净的解决方案,谢谢! – Overcode

3

我想上公认的答案这是在暗示正则表达式var regex = /(<([^>]+)>)/ig的顶部添加了一些东西


最终代码:

var regex = /<\/?\w+[^>]*\/?>/g, 
    body = "<sTrong><b>test<b></STRONG><b> sss</b><em> what if you write some maths: i < 2 && i > 4.</em>"; 

alert(body.replace(regex, "")); 

它也可以帮助把在内置的“字符串”类的功能,所以你可以这样做直接:

"<em>test</em>".stripTags()

String.prototype.stripTags = function() 
{ 
    return this.replace(/<\/?\w+[^>]*\/?>/g, ''); 
}; 

最后,如果你的字符串是一个DOM节点,你可以做alert(element.innerText || element.textContent);这是内置的和更安全!这里见例如:http://jsfiddle.net/66L6nfwt/6/

相关问题