jQuery从没有RegEx的HTML字符串中删除标记

时间:2012-08-24 13:03:08

标签: jquery html string

所以我有以下字符串:

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

结果应该是一个包含内容“Some other Text”的字符串。

我试过......

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

...以及remove()not()等许多其他内容,但没有任何效果。

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

修改

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

6 个答案:

答案 0 :(得分:49)

您可以将string包装在jQuery对象中并执行某种类似的操作:

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

<强> USAGE

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

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

答案 1 :(得分:11)

一种非常简单的方法:

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

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

答案 2 :(得分:10)

这可能符合您的需求:

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

Regular expression visualization

Debuggex Demo

在JavaScript中:

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

它还会删除自动关闭标记(例如<br />)。

答案 3 :(得分:3)

只需删除像这样的

DEMO

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

答案 4 :(得分:2)

检查link

e.g。更具体的案例: -

var s = '<span>Some Text</span> Some other Text';
var $s = s.replace(/<span>(.*)<\/span>/g, "");

答案 5 :(得分:2)

请执行以下操作:

<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