如何在 JSON 文件中正确存储 RegEx 值数组并从 Javascript 中检索它?

Sek*_*mty 1 javascript arrays json purge gulp

我在 Javascript 文件中有以下数组变量,打算传递给Purgecss 作为其whitelistPatterns选项(请注意,我专门从gulp-purgecss插件中使用它):

var purgeWLP = [
    /^carousel-item.*/,    
    /collapsing/,           
    /show/,                
];
Run Code Online (Sandbox Code Playgroud)

现在我想将这个和其他项目变量存储在一个外部.json文件中,以便从不同的地方和文件访问;我尝试使用以下代码:

{
    "wlp": [
        "/^carousel-item.*/",
        "/collapsing/",
        "/show/"
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了错误并且没有得到我期望的结果,即与purgeWLPjavascript 文件中的变量完全相同的结果。

如何在.json文件中正确存储正则表达式值数组并从 Javascript 中检索它?

Ori*_*ori 5

将它们存储为不带斜杠的字符串,并在解析 JSON 字符串后将它们转换回 RegExp 对象:

const json = `{
    "wlp": [
        "^carousel-item.*",
        "collapsing",
        "show"
    ]
}`

const wlp = JSON.parse(json).wlp // or const wlp = require('./project.json').wlp on nodejs
  .map(str => new RegExp(str))

console.log(wlp)
Run Code Online (Sandbox Code Playgroud)

为了保存它们,您可以使用JSON.stringify()每个 RegExp 对象并将其映射到其源字符串(请参阅Emanuel Vintil 的评论?):

var purgeWLP = [
    /^carousel-item.*/,    
    /collapsing/,           
    /show/,                
];

var result = JSON.stringify(purgeWLP.map(re => re.source));

console.log(result);
Run Code Online (Sandbox Code Playgroud)