let string = `<img class="img-fluid big-img logo">
<a class="link link-red link-2">link</a>`;我想通过regex而不是其他方式获得所有的类名。
我想把它们放在一个数组里,就像:
let allClass = ["img-fluid", "big-img", "logo", "link",......];发布于 2021-04-13 10:34:45
也许你可以这样做:
var pattern = /class="([^"]+)"/g;
var classes = [];
[...string.matchAll(pattern)].
forEach(
match => classes = classes.concat( (match[1].split(" ")) )
);
console.log(classes); // ["img-fluid", "big-img", "logo", "link", "link-red", "link-2"]实际上,这里我们有一个正则表达式,它与class="..."匹配,并捕获引号中的所有内容。然后,我们运行matchAll,添加扩展运算符(...),以便它生成一个数组,我们可以使用forEach迭代。
然后我们简单地遍历数组,将捕获的字符串分割成一个数组,并与classes数组合并。
发布于 2021-04-13 09:27:06
我找到了一个解决办法,但我不知道它有多高的效率,但它有效
let regex = /class="(?:([\w+\-])(?:\s|")?){1,}/g;
let collectClass = [];
string.match(regex).forEach(item => { item.replace(`class=`, "").replace(`"`, "").split(" ").forEach(item => collectClass.push(item)) })
allClass = collectClasses.filter((value, index, self) => self.indexOf(value) === index);https://stackoverflow.com/questions/67069722
复制相似问题