首页 > 解决方案 > 如何通过正则表达式获取所有类名

问题描述

let string = `<img class="img-fluid big-img logo">
<a class="link link-red link-2">link</a>`;

我想通过正则表达式而不是其他方式获取所有类名

我想把它们放在一个数组中,比如:

let allClass = ["img-fluid", "big-img", "logo", "link",......];

标签: javascripthtmlcssregex

解决方案


也许你可以做这样的事情:

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数组合并


推荐阅读