首页 > 解决方案 > Javascript RegExp 未知的重复匹配

问题描述

这很难描述,因为我不是正则表达式的专家。所以我告诉你我的情况。

在 HTML 中,希望将class属性贡献给不同的data-xyz属性。问题是每次比赛总是获得所有课程。例如下面的 HTML:

<span class="note-123 index-3 green">Hello</span> <span class="index-456 red">World<span>

到目前为止,我的正则表达式是/<span class="([^\"\s]*)\s*/并且它与第一类匹配。在这种情况下note-123index-456

但是,如果我想获得每个元素的所有类,我可以使用/<span class="([^\"\s]*)\s*([^\"\s]*)\s*([^\"\s]*)\s*/. 这一直有效,直到三个类和第二个类的结果 returnindex-456red一个空字符串。

无论有多少类,是否有可能总是在每场比赛中获得所有类?类似于 Javascript 中的嵌套循环?

我很乐意从你们那里得到任何帮助。

标签: javascriptregex

解决方案


您可以在不使用正则表达式的情况下获取类,使用querySelectorAll来查找您想要的元素并使用classList来获取类名。

然后使用例如添加删除方法。

或使用DOMParser

注意关闭最后一个跨度。

let elms = document.querySelectorAll("span");
elms.forEach(e => {
  for (let value of e.classList.values()) {
    console.log(value);
  }
});
<span class="note-123 index-3 green">Hello</span> <span class="index-456 red">World</span>


推荐阅读