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

Jam*_*Cal 2 javascript regex events

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

例如,字符串:
"<h1 onmouseover="top.location='http://www.google.com">Large Text</h1> Befores "<h1>Large Text</h1>
So保留了HTML标签,但删除了onmouseover,onmouseout,onclick等事件。

提前致谢!

Ian*_*nry 5

怎么样:

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

从评论中编辑:

这旨在一次性地在您的标记上运行。如果您试图在页面执行期间动态删除事件,则情况略有不同。像jQuery这样的javascript库却使它变得极为简单:

$('*').unbind();
Run Code Online (Sandbox Code Playgroud)

编辑:

将其限制为仅在标签内要困难得多。我不确定可以使用单个正则表达式来完成。但是,如果没有人能提出建议,这应该可以帮助您:

var matched;

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

编辑:

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

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