当前位置:  开发笔记 > 编程语言 > 正文

用于从字符串中删除给定(x)HTML标记的正则表达式

如何解决《用于从字符串中删除给定(x)HTML标记的正则表达式》经验,为你挑选了2个好方法。

假设我有一个包含大量文本和(x)HTML标记的字符串.我想删除给定标记的所有实例(以及该标记的任何属性),保留所有其他标记和文本.完成这项工作的最佳正则表达方式是什么?

编辑添加:哦,我很欣赏使用正则表达式来解决这个问题并不是最好的解决方案.但是,为了便于讨论,我们可以假设这个特定的技术决策比我的工资等级高出一些水平吗?;)



1> Dan..:

尝试使用正则表达式解析HTML通常是一个非常糟糕的主意.使用解析器,应该有一个可用于您选择的语言.

可能能够逃脱这样的事情:

]*?>

但这取决于你究竟在做什么.例如,这不会删除标记的内容,并且可能会使HTML处于无效状态,具体取决于您尝试删除的标记.它也很好地应对无效的HTML(并且有很多关于HTML).

改为使用解析器:)



2> Prestaul..:

我认为这里发生了一些严重的反正则表达偏见.很多时候,如果使用完整的解析器没有意义,可能需要从某个标记中剥离特定标记.

当然有时候解析器可能是最好的选择,但如果你正在寻找一个正则表达式,那么:

]*?>[\s\S]*?<\/script>

这将删除脚本标记及其内容.确保使用不区分大小写的匹配.

如果您不想删除标记的内容,则可以使用:

<\/?script[^>]*?>

在javascript中使用的一个例子是:

function stripScripts(markup) {
  return markup.replace(/]*?>[\s\S]*?<\/script>/gi, '');
}

var safeText = stripScripts(textarea.value);

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有