不匹配.io,.w3等的匹配CSS类选择器

时间:2018-11-21 18:47:25

标签: javascript css node.js regex

我的脚本以这样的字符串匹配CSS选择器:

let selectors = index.toString().match(/\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{)/g);

这将在这样的声明中匹配u-background-color-navajo-white之类的css选择器:

.u-background-color-navajo-white {
    background-color: NavajoWhite !important;
    background-color: var(--color-navajo-white) !important;
  }

不过,表达式还与CSS文件中的注释中包含的最高域名匹配,例如.com, .io, .org,等。

任何人都知道如何调整正则表达式以排除这些吗?

存储库测试

git clone https://github.com/superflycss/utilities-layout
npm i
sfc build
node duplicates.1.js

将会记录:

    ole@mki:~/SuperflyCSS/utilities-layout$ node duplicates.1.js 
    [ '.com',
    '.com',
    '.io',
    '.io',
    '.io',
    '.md',
    '.org',
    '.org',
    '.org',
    '.w3',
    '.w3',
    '.w3' ]

CLI支持

现在已修复。如果有人需要postcss构建器/重复项检查器,我将在不久的将来将脚本构建到@superflycss/cli中。

1 个答案:

答案 0 :(得分:1)

我将您的正则表达式更改为:

/(?:^|[, ])\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{)/gm

它要做的就是在开始时添加一个测试:

'start of line'或以下字符之一:比赛前的commaspace

这应该仅包括CSS类。