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

标签 javascript jquery json

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

  term = $(this).val();
  table.column(2).search(term, true, false).draw();

这是我的 JSON 字符串:

[{"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\"}}}
]

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

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

但是上面的语句是行不通的。

谁能建议我为此编写正则表达式的正确方法?

最佳答案

  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
        }
    }
    

关于javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39220981/

相关文章:

php - formname.submit 在 IE8 上不起作用

Javascript setInterval 连续多行

jquery - Bootstrap 3.1.1 缩略图 slider

java - 如何从 firebase 有条件获取 listarray ?

php - 从JSON文件获取信息并将其转换为PHP字符串

javascript - 使用 Javascript 对象和函数时字符串长度无效

javascript - 对于通用 JS 和 React,是否有 '@font-face' 的替代方案

javascript - 如何 Jest 模拟命名导入?

javascript - 使用 Meteor 框架从表单输入中提取数据

json - Spring 4.1.1 RELEASE 和 @ResponseBody 返回 HTTP 406