javascript - 拆分值但将值保留在结果数组中

标签 javascript regex

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

例如:

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

因此我认为最好的起点是获取每个组,所以首先我在 andor 上拆分。这似乎给了我想要的一半。

所以我这样做:

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

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

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

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

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'"]

检查字符串中的“and”有点棘手,但是对于您当前的替代方案(字符串或数字),这将有效 /\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'"]

关于javascript - 拆分值但将值保留在结果数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361493/

相关文章:

javascript - 在 HTML 中嵌入 PDF 字节数据

javascript - 标题大小写句子

Python:如何获取匹配之间的字符串?

regex - 是否有可能在 ActionScript/Flex 中创建错误的正则表达式,从而导致运行时错误?

javascript - 删除作为数组传递给 URL 的 URL 查询字符串之一?

javascript - 使用 php 解析 Javascript 数组或对象

javascript - 更新 firebase,无需重复

javascript - 如何匹配所有内部星号且它们之间没有空格

python - 使用正则表达式在python中解析消息通知索引

regex - 选择字符串结果上的 Powershell Select-Object 与 ForEach