假设我有一个包含大量文本和(x)HTML标记的字符串.我想删除给定标记的所有实例(以及该标记的任何属性),保留所有其他标记和文本.完成这项工作的最佳正则表达方式是什么?
编辑添加:哦,我很欣赏使用正则表达式来解决这个问题并不是最好的解决方案.但是,为了便于讨论,我们可以假设这个特定的技术决策比我的工资等级高出一些水平吗?;)
Dan*_*Dan 17
尝试使用正则表达式解析HTML通常是一个非常糟糕的主意.使用解析器,应该有一个可用于您选择的语言.
你可能能够逃脱这样的事情:
</?tag[^>]*?>
Run Code Online (Sandbox Code Playgroud)
但这取决于你究竟在做什么.例如,这不会删除标记的内容,并且可能会使HTML处于无效状态,具体取决于您尝试删除的标记.它也很好地应对无效的HTML(并且有很多关于HTML).
改为使用解析器:)
Pre*_*aul 15
我认为这里发生了一些严重的反正则表达偏见.很多时候,如果使用完整的解析器没有意义,可能需要从某个标记中剥离特定标记.
当然有时候解析器可能是最好的选择,但如果你正在寻找一个正则表达式,那么:
<script[^>]*?>[\s\S]*?<\/script>
Run Code Online (Sandbox Code Playgroud)
这将删除脚本标记及其内容.确保使用不区分大小写的匹配.
如果您不想删除标记的内容,则可以使用:
<\/?script[^>]*?>
Run Code Online (Sandbox Code Playgroud)
在javascript中使用的一个例子是:
function stripScripts(markup) {
return markup.replace(/<script[^>]*?>[\s\S]*?<\/script>/gi, '');
}
var safeText = stripScripts(textarea.value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7775 次 |
| 最近记录: |