【问题标题】:Remove all tags except wanted tags with JS regex使用 JS 正则表达式删除除想要的标签之外的所有标签
【发布时间】:2012-03-01 15:40:58
【问题描述】:

我需要从字符串中删除除允许标签列表之外的所有标签。我必须在 javascript 中使用正则表达式。

所以如果我的字符串中有:

<html>
    <b>my text</b> is just <strong>an example</strong>
</html>

我的允许标签列表是:b,强

结果必须是:

<b>my text</b> is just <strong>an example</strong>

似乎很简单,但正则表达式让我摆脱了我:)

非常感谢亲爱的朋友们!

【问题讨论】:

  • 所以你想用 Regex 解析 HTML?
  • 不,OP想要剥离它,这更容易。
  • 呸,我虽然能听到马蹄声……小马蹄声。幸运的是我错了:)
  • 正确剥离 HTML 涉及解析它,而仅使用正则表达式无法做到这一点。

标签: javascript html regex tags


【解决方案1】:

我刚刚在 phpjs.org 上查到了这个:http://phpjs.org/functions/strip_tags:535

function strip_tags (input, allowed) {
    allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
        commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}

不是我的代码,但它会按照您的要求执行 - 删除带有您指定的例外的标签。

【讨论】:

  • 谢谢,超现实的梦想就是这样!我没有在看 php 网站:)
  • 我们真的需要 cmetsAndPhpTags 吗?
猜你喜欢
  • 2011-05-15
  • 2023-03-10
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
相关资源
最近更新 更多