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

关于jexl.eval中toLowerCase()和replace()方法的使用问题咨询

问题分析与解决

核心原因

JEXL 默认不支持直接调用原生 JavaScript 字符串方法(比如 toLowerCase()、replace()),你直接在表达式里使用这些方法不符合JEXL的语法规范,这就是返回空字符串的根本原因。

JEXL 的设计逻辑是通过自定义 Transform(管道符 | 语法)来实现数据转换,而非直接调用原生对象方法。你提供的 playground 示例也验证了这一点——里面就是通过注册 lower、replace 两个自定义 Transform 来实现字符串处理的。

修正方案

1. 注册必要的 Transform

首先需要给 JEXL 实例注册对应的转换函数:

const jexl = require('jexl');

// 注册小写转换
jexl.addTransform('lower', (val) => val.toLowerCase());

// 注册替换转换(支持全局替换)
jexl.addTransform('replace', (val, search, replacement) => {
    return val.replace(new RegExp(search, 'g'), replacement);
});

2. 修正表达式语法

改用 JEXL 支持的管道符语法调用 Transform:

jexl.eval("dataset[0].data['Entity Name'] | lower | replace(' ', '_')", data);

额外说明

如果你坚持要直接使用原生字符串方法,理论上可以通过扩展 JEXL 的 String 原型来实现,但这种方式不符合 JEXL 的设计理念,可能带来兼容性问题,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:19