25

所以我有以下字符串:

var s = '<span>Some Text</span> Some other Text';

结果应该是内容为“其他文本”的字符串。

我试过了...

var $s = $(s).not('span');

...以及许多其他带有remove(),not()等的东西,但没有任何效果。

有什么建议么?我可以将字符串与正则表达式匹配,但我更喜欢通用的 jQuery 解决方案。

编辑:

我不使用正则表达式搜索解决方案,我只是想知道为什么这个例子不起作用:http: //jsfiddle.net/q9crX/150/

4

6 回答 6

57

您可以将您string的 jQuery 对象包装起来并进行如下操作:

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

用法

var removedSpanString = removeElements("<span>Some Text</span> Some other Text", "span");

这种方法的美妙之处在于您可以指定要删除的 jquery 选择器。即您可能希望删除<th>字符串中的 。在这种情况下,这将非常方便。希望这可以帮助!

于 2012-08-24T13:12:29.387 回答
15

一个非常简单的方法:

var html = '<span>Remove <b>tags &amp; entities</b></span>';
var noTagText = $(html).text();
// ==> noTagText = 'Remove tags & entities'

请注意,它会删除标签但也会删除 html 实体。

于 2014-02-04T16:42:22.530 回答
11

这可能适合您的需求:

<([^ >]+)[^>]*>.*?</\1>|<[^/]+/>

正则表达式可视化

调试演示

在 JavaScript 中:

$s = s.replace(/<([^ >]+)[^>]*>.*?<\/\1>|<[^\/]+\/>/ig, "");

它还删除了自闭合标签(例如<br />)。

于 2012-08-24T13:06:30.057 回答
4

只需像这样删除html标签

演示

var s = '<span>Some Text</span> Some other Text';
var r = /<(\w+)[^>]*>.*<\/\1>/gi;
s.replace(r,"");

在这里给出的答案:http://www.webdeveloper.com/forum/showthread.php?t=252483

于 2012-08-24T13:06:28.130 回答
3

只需执行以下操作:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

<script>
$(document).ready(function(){
 $("span").not("span div").each(
 function(index, element) {
$("span").remove();
 }
 );
 });

</script>

<span>Some Text</span> Some other Text
于 2012-08-24T13:22:02.370 回答
2

检查链接

例如,更具体到您的情况:-

var s = '<span>Some Text</span> Some other Text';
var $s = s.replace(/<span>(.*)<\/span>/g, "");
于 2012-08-24T13:08:03.967 回答