分割一个值,但将值保留在结果数组中
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'"]
检查字符串内部的"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'"]
试试这个
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' ]
相关文章:
- 分派点击事件并保留击键修饰符
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- JSONP请求返回结果,但也触发error_callback
- 提交后保留下拉选择的值
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 刷新后保留对网页的更改
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 表单提交后保留数据库查询结果
- 角度 ui 类型提前建议 + 如果没有结果,则保留
- Javascript -根据字符拆分字符串,但将其保留在结果数组中
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- 如何在单击搜索按钮并在同一页面上打印结果后同时保留搜索查询框和字母搜索
- 如何在选择后保留Select2结果
- 分割一个值,但将值保留在结果数组中
- 保留proc.stdout.on()结果