Javascript - 来自"{"task":"'+ t'"的正则表达式,.*"}"返回整个字符串

Bil*_*lie 1 javascript regex json

我有一个包含JSON任务数组的文件:

目前该文件包含:

[
 {"task":"hey", "checked":"0", "data1":"", "data2":"", "data3":""},
 {"task":"there", "checked":"0", "data1":"jiojoi", "data2":"", "data3":""}
]
Run Code Online (Sandbox Code Playgroud)

我想隔离一个signle任务,所以我使用以下代码:

var taskExp = new RegExp('{"task":"' + taskName + '",.*"}', '');

// Get the task
var task = taskExp.exec(text);
Run Code Online (Sandbox Code Playgroud)

在这种特定情况下,如果taskName = "hey",它返回整个字符串.(2个任务).

如果taskName = "there",没关系.

为什么?提前致谢.

Cer*_*rus 5

使用正则表达式过滤掉JSON字符串的属性是个坏主意.
将其解析为对象(/数组),然后使用filter.

假设text是你的JSON字符串:

var dataArray = JSON.parse(text),
    taskName = "someTaskName";

var result = dataArray.filter(function(item){
    return item.task === taskName;
});
Run Code Online (Sandbox Code Playgroud)

然后,result是所有匹配任务的数组.