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

Fid*_*lis 21 html string jquery

所以我有以下字符串:

var s = '<span>Some Text</span> Some other Text';
Run Code Online (Sandbox Code Playgroud)

结果应该是一个包含内容"Some Other Text"的字符串.

我试过了...

var $s = $(s).not('span');
Run Code Online (Sandbox Code Playgroud)

......和很多其他的东西remove(),not()等,但没有奏效.

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

编辑:

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

Abd*_*nim 50

你可以将你string的jQuery对象包装起来并进行某种类似的操作:

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

用法

var removedSpanString = removeElements("<span>Some Text</span> Some other Text", "span");
Run Code Online (Sandbox Code Playgroud)

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

  • 这家伙是救命稻草! (2认同)

yol*_*yer 12

一个非常简单的方法:

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

请注意,它将删除标签,但也删除html实体.


sp0*_*00m 10

这可能适合您的需求:

<([^ >]+)[^>]*>.*?</\1>|<[^/]+/>
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

在JavaScript中:

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

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