Javascript 从HTML字符串获取所有内联事件

Javascript 从HTML字符串获取所有内联事件,javascript,regex,parsing,dom,Javascript,Regex,Parsing,Dom,我正在尝试从HTML字符串中获取所有内联事件标记的列表,如何才能做到这一点 例如: <a onclick='foo()'></a> 我想提取onclick='foo()' 使用正则表达式或其他替代方法是否可行?这里有一个。活动内容为第1组: <\w+[^>]+(on[a-z]+=["'][^"']+["'])[^>]*> ]+(在[a-z]+=[“][^”]+[“]])[^>]*> 您应该让浏览器进行解析,例如: var doc = do

我正在尝试从HTML
字符串中获取所有内联事件标记的列表,如何才能做到这一点

例如:

 <a onclick='foo()'></a>

我想提取
onclick='foo()'


使用正则表达式或其他替代方法是否可行?

这里有一个。活动内容为第1组:

<\w+[^>]+(on[a-z]+=["'][^"']+["'])[^>]*>
]+(在[a-z]+=[“][^”]+[“]])[^>]*>

您应该让浏览器进行解析,例如:

var doc = document.implementation.createHTMLDocument('');
doc.documentElement.innerHTML = '<body onload="alert(1)"></body>'; // your string here

是的,是的,我读过,不知道是否有其他选择。虽然事件在内联方面是非常恒定的,所以正则表达式可能会工作。你可以迭代每个元素并访问它的
onXXXXX
属性…不能,因为我在Node.js中这样做,而JSDOM模块讽刺地剥离了内联事件。我同意你应该使用如果你真的在浏览器中,可以使用DOM或某个库。哦,如果你在代码中搜索内联事件处理程序以用其他东西替换它们,regex可能会更容易。我之所以需要它,是因为我在node.js中这样做,具有讽刺意味的是jsdom模块忽略了内联事件。这很奇怪,对我来说很好。你知道吗尝试过不区分大小写的搜索吗?如果问题是组,顺便说一句,您可以使用更简单的正则表达式,如
(在[a-z]+=[“][^']+[“])(?=[^>]*>)
var attributes = Array.prototype.slice.call(doc.body.attributes);
for (var i = 0; i < attributes.length; i++) {
    if (/^on/.test(attributes[i].name)) {
        console.log(attributes[i].name, attributes[i].value);
    }
}