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

javascript-How to use regex on json string to search datatable column in JQuery?

本文关键字:字符串 搜索 数据表 json JQuery 正则表达式      更新时间:2023-09-26

我刚刚在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
        }
    }