如何验证JSONATA表达式有效性?求正则或npm包验证方法
JSONATA表达式有效性验证方案
关于正则验证的可行性
直接用正则表达式完全验证JSONATA表达式的有效性几乎不可能实现。JSONATA语法包含路径查询、函数调用、嵌套表达式、运算符、条件逻辑等复杂结构,正则的匹配能力无法覆盖所有语法规则和嵌套场景,很容易出现误判——要么漏判复杂的合法表达式,要么误将非法表达式判定为有效。
推荐的npm包验证方案
官方提供的jsonata包自带表达式编译验证能力,这是最可靠的验证方式:
安装依赖包:
npm install jsonata编写验证函数:
const jsonata = require('jsonata'); function isValidJsonata(expression) { try { // 尝试编译JSONATA表达式,编译成功则说明语法合法 jsonata(expression); return true; } catch (err) { // 编译失败时捕获错误,返回false,还可通过err.message获取具体错误信息 return false; } }使用示例:
// 合法表达式 console.log(isValidJsonata('$sum(items.price)')); // 输出 true // 非法表达式(缺少闭合括号) console.log(isValidJsonata('$sum(items.price')); // 输出 false
如果需要给用户展示具体错误提示,可以在catch块中提取err.message的内容,比如“Unexpected end of input at line 1 column 15”,让表单的错误提示更精准。
内容的提问来源于stack exchange,提问作者sai vineeth
相关产品推荐
相关产品推荐

