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

Posted

技术标签:

【中文标题】javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?【英文标题】:javascript-How to use regex on json string to search datatable column in JQuery? 【发布时间】:2017-01-06 08:30:11 【问题描述】:

我只是在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();

但是上面的说法是行不通的。

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

【问题讨论】:

不要使用正则表达式。将 JSON 解析为对象并对其进行过滤。 @RoryMcCrossan,你能给我一个简单的例子吗?我对此很陌生。 “JSON”似乎不是有效的 JSON。 【参考方案1】:

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

    正如 cmets 中所建议的,将 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
        
    
    

【讨论】:

嗨..` regex = new RegExp('"English": ["'+ '.*' +term+'.*', 'gi');`这个语句抛出异常..I不知道这里出了什么问题。 我编辑了答案,[ 符号必须用\\ 进行转义,因为没有\\ [ 声明了一个字符类。 在你的第二个解决方案中,'rows'是什么?..它会用json字符串分配吗? rows 是一个字符串数组。 JSON 字符串在 row 中。你的table.column(2) 会返回什么?是数组吗? table.column(2) 是 json 对象

以上是关于javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 JSON 字符串在 JavaScript 中是不是有值?

如何在 Android 上使图像透明?

如何在 Blazorise 上使验证日期不为空

如何在Javascript中将字符串转换为json

如何在移动视图上使输入和按钮堆栈相互叠加

如何在 CLI 上使 gpg 提示输入密码