如何从字符串中删除所有html标记

时间:2015-07-20 12:02:45

标签: javascript jquery

您好我正在尝试从特定字符串中删除所有显示错误的html标记。

这是我的字符串:

<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>

我的jQuery代码在这里:

var item = <p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>;
item = item.replace(/~/g, '');
item = item.replace(/<p>/g, '');
item = item.replace('</p>'/g, '');
var splitArray = item.split('<br />');
var l = splitArray.length;
for (var i = 0; i < l; i++) {
    out = out + "<li><span class='sp_icon sp_star_icon'></span> "
          + splitArray[i].trim() + "</li>";
}
console.log(item);

8 个答案:

答案 0 :(得分:18)

你可以用正则表达式删除所有的html标签:/<(。|\ n)*?&gt; / g

此处详细说明:http://www.pagecolumn.com/tool/all_about_html_tags.htm

在你的JS代码中,它看起来像这样:

item = item.replace(/<(.|\n)*?>/g, '');

答案 1 :(得分:3)

不要自己动手,让DOM为你做。

E.g。 (使用jQuery)

jQuery("<p>Hi there</p>...").text();
    // => "Hi there..."

E.g。 (没有jQuery)

var d = document.createElement('div');
d.innerHTML = "<p>Hi there</p>...";
(d.textContent || d.innerText); // => "Hi there..."

答案 2 :(得分:3)

使用vanilla JS,你可以这样做

&#13;
&#13;
var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>';

function getText(html) {
    var tmp = document.createElement('div');
    tmp.innerHTML = html;
    
    return tmp.textContent || tmp.innerText;
}

console.log(getText(item));
&#13;
&#13;
&#13;

答案 3 :(得分:3)

var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>'

item = item.replace(/<\/?.+?>/ig, '');

答案 4 :(得分:1)

我希望您只是尝试从字符串中删除HTML标记。以下应该工作。虽然可能需要测试。

filtered = yourString.replace(/<[a-z]{1}>.*?<\/[a-z]{1}>/gi, ""); 

如果您只是想摆脱并标记并将文本保留在其中,那么

filtered = yourString.replace(/<\/{0,1}[a-z]+>/gi, "");

答案 5 :(得分:1)

您可以使用jQuery的文本方法。

var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>';
console.log($(item).text());

您可以在http://jsfiddle.net/gL7fufax/

查看小提琴代码

答案 6 :(得分:0)

根据您的特定字符串要求(删除<p>元素):

item = item.replace(/<\/?p>/g,''); // will globally find “<p>” and “</p>” only

答案 7 :(得分:0)

您可以将字符串包装在jQuery对象中:

var removeElements = function(text, selector) {
    var wrapped = $("<div>" + text + "</div>");
    wrapped.find(selector).remove();
    return wrapped.html();
}

var removedPString = removeElements("<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>", "p");