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等事件。
提前致谢!
怎么样:
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)