我正在尝试使用package match-all来匹配CSS选择器并返回所有它们的数组。这是代码。
const matchAll = require("match-all");
let s = `.u-br, .u-nr {
blah blah
}
.u-tr {
blah .blah
}`;
console.log(matchAll(s, /\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{)/g).toArray());
当我运行它时,它只会记录[]
,但是正则表达式是正确的as can be seen here。
有什么想法吗?如果程序包有错误,是否可以通过简单的方法解决?
答案 0 :(得分:3)
let s = "Hello _World_ and _Mars_";
console.log(matchAll(s, /_([a-z]+)_/gi).toArray());
// => [ "World", "Mars" ]
结果数组由捕获组构建。这是他们所有示例所显示的。大概,如果您没有捕获组,则可以使用内置的.match
实现相同的目的:
let s = `.u-br, .u-nr {
blah blah
}
.u-tr {
blah .blah
}`;
console.log(s.match(/\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{)/g));
因此,如果您想为此使用match-all
,请尝试将匹配项包含在捕获组中:
matchAll(s, /(\.-?[_a-zA-Z]+[\w-]*(?=[^{}]*\{))/g).toArray()