javascript-如何在json字符串上使用正则表达式来搜索JQuery中的数据表列?

时间:2016-08-30 07:09:17

标签: javascript jquery json

我只是在javascript中使用以下语句在一列中搜索特定字符串并过滤数据表中的记录。

[{"userid":"2315","location":"x","details":"{\"subject‌​s\": {\"English\": [\"meena\", \"teena\"]}, \"hours\": {\"2\"}}}", 
 {"userid":"3009","location":"y","details":"{\"subjects\": {\"English\": [\"meena\"]}, \"hours\": {\"4\"}}}, 
 {"userid":"3109","location":"z","details":"{\"English\": [\"suresh\", \"divya\"]}, \"hours\": {\"4\"}}, 
 {"userid":"3209","location":"a","details":"{\"English\": [\"ramesh\", \"meena\"]}, \"hours\": {\"4\"}}, 
 {"userid":"3309","location":"b","details":"{\"subjects\": {\"English\": [\"revathi\", \"meena\"]}, \"hours\": {\"4\"}}}
]

这是我的JSON字符串:

regex = '"English": ["'+ '.*' +term+'.*';
table.column(3).search(regex, false, false).draw();

想要使用正则表达式匹配“英语”中的任何一个值,并使用该值搜索以过滤记录。如下所示。

{{1}}

但上述说法不起作用。

任何人都可以建议我为此编写正则表达式的正确方法吗?

1 个答案:

答案 0 :(得分:0)

  1. 如果search方法支持正则表达式并且您绝对需要这样做,请传递new RegExp('"English": \\["'+ '.*' +term+'.*', 'gi')之类的内容。

  2. 正如评论中所建议的那样,将JSON视为字符串并不是一个好主意。过多的空格或转义的特殊字符可能会导致错误的答案。你最好解析JSON并根据需要进行搜索,例如:

    var term = ...;
    for (var i = 0, l = rows.length; i < l; i++) {
        var row = rows[i];
        var user = JSON.parse(row);
        var details = user.details && JSON.parse(user.details);
        if (details.English && details.English.indexOf(term) !== -1) {
            // there is the searched term in the users' details
        }
    }