正则表达式:从“内容”中排除 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 得到了第一个 。
有什么想法吗?
【问题讨论】:
如果没有真正的解析器,这将是不够的,因为您仍然会有script
、style
、object
等标签,其中包含内容。
这很容易回答,你根本不应该使用正则表达式。'
这是你应该做的 -> 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标签