我正在使用JavaScript尝试创建一个正则表达式,以查找(在html文件中)所有没有onclick属性的div。
示例:
此div应该忽略。
<div class="foo"
id="bar"
onclick="someFunction()>some text</div>
此div应该匹配(因为它不包含onclick属性)。
<div class="foo"
id="bar">some text</div>
我试过了,但是不行。
var pattern = /div[\s\w\n\=\(\)"]*(?!onclick)div[\s\w\n\=\(\)"]*">/
我猜测正则表达式的第一部分(在否定前瞻之前)实际上与否定前瞻匹配。
有人可以帮忙吗?预先感谢您的任何建议。
答案 0 :(得分:2)
为什么不使用querySelectorAll
呢? div:not([onclick])
将选择没有<div>
属性的onclick
个。
document.querySelectorAll('div:not([onclick])')
.forEach((div) => {
console.log(div);
});
<div class="foo" id="bar" onclick="someFunction()">some text</div>
<div class="foo">some text 2</div>
如果只有一个字符串,因此不能直接在其上使用querySelectorAll
,则可以使用DOMParser
将其安全地转换为文档:
const htmlText = `<div class="foo" id="bar" onclick="someFunction()">some text</div>
<div class="foo">some text 2</div>`;
const doc = new DOMParser().parseFromString(htmlText, 'text/html');
doc.querySelectorAll('div:not([onclick])')
.forEach((div) => {
console.log(div);
});