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

时间:2018-10-15 23:46:55

标签: javascript node.js regex

我正在尝试使用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

有什么想法吗?如果程序包有错误,是否可以通过简单的方法解决?

1 个答案:

答案 0 :(得分:3)

documentation显示:

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