我制作了一个div
标记并将其内容存储在变量中。如果此标记包含p,b
或任何其他标记,则应将其从字符串中删除。我怎样才能做到这一点?
答案 0 :(得分:17)
使用正则表达式。
var regex = /(<([^>]+)>)/ig
var body = "<p>test</p>"
var result = body.replace(regex, "");
alert(result);
这里是DEMO
希望这有帮助。
答案 1 :(得分:8)
您可以按照此示例
var stringContent = "<p>Hi dear</p><p>Wish you a happy birthday</p>";
var text = $(stringContent).text();
答案 2 :(得分:5)
这更安全:
function plaintext(html){
return $("<div/>").html(html).text();
}
答案 3 :(得分:3)
我想在接受的答案之上添加一些,这表明正则表达式为
var regex = /(<([^>]+)>)/ig
:
i
标记,因为您不匹配任何字母字符。见这里:http://jsfiddle.net/66L6nfwt/2/ <
和>
,则可以改进此正则表达式,因为它会失败。见这里:http://jsfiddle.net/66L6nfwt/4/ /<\/?\w+[^>]*\/?>/g
。见这里:http://jsfiddle.net/66L6nfwt/5/ 最终代码:
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, ""));
将函数放在内置的“String”类中也是有帮助的,这样您就可以直接执行此操作:
"<em>test</em>".stripTags()
String.prototype.stripTags = function()
{
return this.replace(/<\/?\w+[^>]*\/?>/g, '');
};
最后,如果您的字符串是DOM节点,则可以alert(element.innerText || element.textContent);
内置甚至更安全!请参阅此处的示例:http://jsfiddle.net/66L6nfwt/6/
答案 4 :(得分:1)
使用普通的javascript,您可以将其作为
string.replace(/(<([^>]+)>)/ig,"");
我认为这可能比.text()方法更快。
答案 5 :(得分: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