如何使JavaScript regexbb查找缺少html属性

时间:2019-03-12 09:15:29

标签: javascript html regex

我正在使用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\=\(\)"]*">/

我猜测正则表达式的第一部分(在否定前瞻之前)实际上与否定前瞻匹配。

有人可以帮忙吗?预先感谢您的任何建议。

1 个答案:

答案 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);
  });