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

Javascript 如何从字符串中删除所有html标记,javascript,jquery,Javascript,Jquery,您好,我正在尝试删除一个特定字符串中的所有html标记,显示错误 这是我的字符串: <p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p> 你好~wifi-free这是一个测试~早餐免费这是另一个测试 我的jQuery代码如下: var item = <p>Hi there<

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

这是我的字符串:

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

~wifi-free这是一个测试

~早餐免费这是另一个测试

我的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);
var item=Hi那里

~wifi free这是测试

~早餐免费这是另一个测试

; 项目=项目。替换(/~/g',); 项目=项目。替换(//g'); 项目=项目。替换(“

”/g“); var splitArray=item.split(“
”); var l=splitArray.length; 对于(变量i=0;i” +拆分数组[i].trim()+“”; } 控制台日志(项目);
不要自己做,让DOM替你做

例如(使用jQuery)

jQuery(Hi那里

…).text(); //=>“你好…”
例如(不带jQuery)

var d=document.createElement('div');
d、 innerHTML=“你好,

…”; (d.textContent | | d.innerText);//=>“你好……”
您可以使用正则表达式:/g除去所有html标记

详细描述如下:

在JS代码中,它将如下所示:

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

使用vanilla JS,您可以这样做

var item='Hi那里

~wifi-free这是一个测试

~早餐免费这是另一个测试

'; 函数getText(html){ var tmp=document.createElement('div'); tmp.innerHTML=html; 返回tmp.textContent | | tmp.innerText; } log(getText(item))
var item='您好

~wifi free这是测试

~早餐免费这是另一个测试

' item=item.replace(//ig',);
根据您对特定字符串的要求(要删除
元素):

item=item.replace(//g',);//将仅全局查找“”和“


您可以将字符串包装到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");
var removeElements=函数(文本,选择器){
var wrapped=$(“”+text+“”);
wrapped.find(选择器).remove();
返回wrapped.html();
}
var removedPString=removeElements(Hi那里

~wifi free这是测试

~早餐免费这是另一个测试

,“p”);
我希望您只是试图从字符串中删除HTML标记。下面的方法应该有效。虽然可能需要测试

filtered = yourString.replace(/<[a-z]{1}>.*?<\/[a-z]{1}>/gi, ""); 
filtered=yourString.replace(/.*?/gi,”);
如果你只是想去掉和标记,然后把文本放在里面

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

您可以使用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());
var item='Hi那里

~wifi-free这是一个测试

~早餐免费这是另一个测试

'; log($(item.text());

您可以在

处检查FIDLE代码错误是否与您的第一个字符串没有用引号括起来有关?或者这不是代码中的实际外观?请确保您发布的内容与您使用的内容完全一致。并告诉我们错误。您的变量
必须在引号中。第三个替换(
'

'/g
)也很奇怪。我认为这根本不起作用。这不起作用,因为它不仅会删除标记,还会删除标记中的文本。我已经使用了它。OP应该注意:这是不推荐的,因为您的正则表达式将永远无法像真正的浏览器HTML解析引擎那样宽松和全面。如果您正在删除已知的HTML,那么这很酷,但是如果这个HTML未知,那么您应该真正寻找一个合适的HTML解析引擎,最方便的是本机浏览器DOM:)
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");
filtered = yourString.replace(/<[a-z]{1}>.*?<\/[a-z]{1}>/gi, ""); 
filtered = yourString.replace(/<\/{0,1}[a-z]+>/gi, "");
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());