首页 > 解决方案 > 如何在 JSON 文件中正确存储 RegEx 值数组并从 Javascript 中检索它?

问题描述

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

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

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

{
    "wlp": [
        "/^carousel-item.*/",
        "/collapsing/",
        "/show/"
    ]
}

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

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

标签: javascriptarraysjsongulppurge

解决方案


将它们存储为不带斜线的字符串,并在解析 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)

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

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

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

console.log(result);


推荐阅读