【问题标题】:Regular Expression: exclude html tags from "content"正则表达式:从“内容”中排除 html 标签
【发布时间】:2014-04-11 03:47:42
【问题描述】:

一位朋友问我这个问题,因为我对 RegExp 的了解还不是很好,所以我在这里。

如何从这个字符串中排除 HTML 标签?

re<br>na<br>to<br>galvao

我尝试了一些正则表达式,但它没有像我预期的那样工作。

(.*)<.*>(.*)

但是这个 RegExp 得到了第一个 。

有什么想法吗?

【问题讨论】:

  • 如果没有真正的解析器,这将是不够的,因为您仍然会有 scriptstyleobject 等标签,其中包含内容。
  • 这很容易回答,你根本不应该使用正则表达式。'
  • 这是你应该做的 -> jsfiddle.net/Hpe5M
  • @adeneo 正是我开始阅读这个问题时的想法。没什么大不了的,但我通常使用d.textContent || d.innerText(翻转属性),因为我希望大多数人会使用支持textContent的浏览器,因此不要对innerText进行不必要的检查。再说一次,没什么大不了的。说真的,将其发布为答案
  • 在很多情况下,正则表达式都能很好地完成这项工作。像这个。正则表达式与 DOM 的缺点与实际解析有关,例如正确验证或遍历。像剥离所有标签这样简单的事情很容易,而正则表达式绝对可以很容易地做到这一点。太多人跳上“哦,不,有人在同一句话中提到了正则表达式和 html,烧死女巫!”潮流

标签: javascript regex


【解决方案1】:

这是一个快速的方法:

var content = "re<br>na<br>to<br>galvao";
content = content.replace(/<[^>]*>/g,'');

【讨论】:

    【解决方案2】:

    用这个正则表达式匹配所有 html 标签:

     <("[^"]*?"|'[^']*?'|[^'">])*>
    

    在此处查看演示:http://regex101.com/r/fA0oT4

    【讨论】:

      【解决方案3】:

      您可以使用非贪婪匹配。根据this question的回答,在javascript中是*?

      所以,假设这是您的正则表达式的唯一问题,它应该适用于

      (.*?)<.*?>(.*?)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-13
        • 2012-12-16
        • 2015-08-08
        • 2017-08-16
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多