正则表达式:从“内容”中排除 html 标签

Posted

技术标签:

【中文标题】正则表达式:从“内容”中排除 html 标签【英文标题】:Regular Expression: exclude html tags from "content" 【发布时间】: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,烧死女巫!”潮流 【参考方案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中是*?

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

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

【讨论】:

以上是关于正则表达式:从“内容”中排除 html 标签的主要内容,如果未能解决你的问题,请参考以下文章

如何用正则表达式匹配除了img标签的所有其他标签 匹配所有html标签我知道: /<[^>]+>/g 关键排除img标签

求一条c# 正则表达式,来获取HTML标签的内容

JS正则过滤指定的HTML标签

php简单正则匹配Img标签src内容采集?

Perl 正则表达式 |如何从文件中排除单词

gsutil - 在 Windows 上使用正则表达式同步两个存储桶的内容时排除文件