首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过regex获得所有类名?

如何通过regex获得所有类名?
EN

Stack Overflow用户
提问于 2021-04-13 06:26:43
回答 2查看 728关注 0票数 2
代码语言:javascript
复制
let string = `<img class="img-fluid big-img logo">
<a class="link link-red link-2">link</a>`;

我想通过regex而不是其他方式获得所有的类名。

我想把它们放在一个数组里,就像:

代码语言:javascript
复制
let allClass = ["img-fluid", "big-img", "logo", "link",......];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-13 10:34:45

也许你可以这样做:

代码语言:javascript
复制
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数组合并。

票数 1
EN

Stack Overflow用户

发布于 2021-04-13 09:27:06

我找到了一个解决办法,但我不知道它有多高的效率,但它有效

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67069722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档