繁体   English   中英

javascript使用正则表达式在多个字段上拆分字符串

[英]javascript split string on multiple fields using regex

我正在尝试在我的JavaScript中建立方便的dsl-ish查询功能。

给出:

var query = "lastName = 'smith' and firstName = 'jack' or city = 'vancouver'";

将此sql-esque字符串解析为可用对象的最优雅方法是什么,例如:

[
{
 field:'lastName',
 operator:'=',
 value:'smith',
 join:'and'
},
{
 field:'firstName',
 operator:'=',
 value:'jack',
 join:'or'
},
{
 field:'city',
 operator:'=',
 value:'vancouver'
}
]

在我开始无可救药地循环之前,我认为会有一些正则表达式主目录具有单线。

创建一个语法(EBNF或BNF),然后为其编写一个解析器。 您不仅会留下更多的头发(如果尝试使用正则表达式,最终将把头发拉出来!),您还将学到一些新奇而有趣的方法:)。

如果编写递归下降解析器,则可以轻松地将查询表示为树。

这是一个EBNF,可以帮助您入门:

query            ::= criterion { criterion }
criterion        ::= boolean-operator { filter }
boolean-operator ::= "not" | "or" | "and"
filter           ::= variable, "=", value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM