You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将正则表达式正确赋值给配置对象的test属性?

解决Webpack配置正则表达式序列化问题

问题核心

使用JSON.stringify()处理配置对象时会出现两种不符合预期的情况:

  • 若将正则写成字符串形式,输出后会被双引号包裹,不符合Webpack配置的格式要求;
  • 若直接使用正则字面量,JSON.stringify()会将其序列化为空对象{}。

解决方案

不能依赖原生JSON.stringify(),需要自定义序列化逻辑,将正则对象转换为不带引号的字面量格式。

代码实现

config.module.rules.unshift({
    test: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
    use: ['raw-loader']
});

// 自定义序列化函数
function serializeConfig(obj) {
    return JSON.stringify(obj, (key, value) => {
        if (value instanceof RegExp) {
            // 将正则对象转为字面量格式的字符串
            return value.toString();
        }
        return value;
    }).replace(/"(\/.*?\/)"/g, '$1'); // 移除正则字符串外层的双引号
}

fs.writeFileSync("C:\\temp\\config.txt", serializeConfig(config));

效果说明

  1. 用正则字面量定义test属性,确保正则表达式的语法正确;
  2. 通过JSON.stringify()的替换回调,识别并转换正则对象为/xxx/格式的字符串;
  3. 最后用正则替换去掉包裹正则的双引号,得到符合要求的输出格式。

生成的config.txt内容如下:

{
    "test": /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
    "use": [
        "raw-loader"
    ]
}

内容的提问来源于stack exchange,提问作者Colin Dawson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:25:16