繁体   English   中英

拆分值但保留结果数组中的值

[英]Split on a value but keep value in the result array

我正在尝试编写一个方法来搜索与C#的Linq之类的查询匹配的项目。

例如:

myObj.query("name == 'Bob' and age >= 18");

因此,我认为最好的起点是获得每个小组,所以首先我要分开and和。 or 这似乎给了我一半我想要的东西。

所以我这样做:

Object.prototype.query = function(string){
    console.log(string.split(/(?=(and|or))/g));
};

问题是,我在控制台中得到错误的输出:

0: "name == 'Bob' "
1: "and"
2: "and age >= 18"

我正在寻找更像这样的东西(注2,它不再包含and ):

0: "name == 'Bob'"
1: "and"
2: "age >= 18"

我认为我正朝着正确的方向前进,我对正则表达式并不是那么好,所以我该如何分割这两个值但是将它们保留在输出中呢?

这是因为你正在使用正向前瞻修饰符。 您还需要确保不要捕获部分单词,因此我添加了空格分隔符。 /\\s+(and|or)\\s+/如同

"name == 'Bob' and age >= 18 and ornate=='lando'".split(/\s+(and|or)\s+/)

会工作,回来

["name == 'Bob'", "and", "age >= 18", "and", "ornate=='lando'"]

在字符串中检查“和”会变得有点棘手,但是使用当前的替代(字符串或数字),这将起作用/\\s+(and|or)\\s+(?![\\w\\s]*')/

"name == 'Bob' and age >= 18 and ornate='me and lando'".split(/\s+(and|or)\s+(?![\w\s]*')/)

回国

["name == 'Bob'", "and", "age >= 18", "and", "ornate='me and lando'"]

试试这个

Object.prototype.query = function(string){
    console.log(string.split(/\s+(and|or)\s+/g));
};

var myObj = {};
myObj.query("name == 'Bob' and age >= 18");

产生

[ 'name == \'Bob\'', 'and', 'age >= 18' ]

暂无
暂无

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

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