创建所有正则表达式匹配的数组?



我正在尝试使用包匹配所有匹配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());

当我运行它时,它只是记录[],但正则表达式是正确的,如此处所示。

思潮? 如果软件包有错误,有没有简单的解决方法?

如文档所示:

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()

最新更新