gpt4 book ai didi

Javascript 正则表达式 [删除事件]

转载 作者:行者123 更新时间:2023-11-29 17:31:11 25 4
gpt4 key购买 nike

有谁知道从 html 中删除事件的良好正则表达式。

例如字符串:
"<h1 onmouseover="top.location='http://www.google.com">Large Text</h1>成为 "<h1>Large Text</h1>
因此 HTML 标记会保留,但会删除 onmouseover、onmouseout、onclick 等事件。

提前致谢!

最佳答案

怎么样:

data.replace(/ on\w+="[^"]*"/g, '');

根据评论编辑:

这是为了一次性在您的标记上运行。如果您试图在页面执行期间动态地删除事件,那就有点不同了。不过,像 jQuery 这样的 javascript 库使它变得非常容易:

$('*').unbind();

编辑:

将其限制在标签内要困难得多。我不相信它可以用一个正则表达式来完成。但是,如果没有人想出一个,这应该可以帮助您:

var matched;

do
{
matched = false;
data = data.replace(/(<[^>]+)( on\w+="[^"]*")+/g,
function(match, goodPart)
{
matched = true;
return goodPart;
});
} while(matched);

编辑:

我放弃了为此编写一个正则表达式。必须有某种方法可以在不实际捕获匹配中标记的开头的情况下检查匹配的上下文,但我的 RegEx-fu 不够强大。这是我要提出的最优雅的解决方案:

data = data.replace(/<[^>]+/g, function(match)
{
return match.replace(/ on\w+="[^"]*"/g, '');
});

关于Javascript 正则表达式 [删除事件],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com