我的脚本以这样的字符串匹配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' ]
现在已修复。如果有人需要postcss构建器/重复项检查器,我将在不久的将来将脚本构建到@superflycss/cli中。
答案 0 :(得分:1)
我将您的正则表达式更改为:
/(?:^|[, ])\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{)/gm
它要做的就是在开始时添加一个测试:
'start of line'
或以下字符之一:比赛前的comma
或space
。
这应该仅包括CSS类。