数据表查询url字符串:需要正则表达式来修复url解析

时间:2015-04-07 19:19:54

标签: javascript jquery regex datatable

我正在建立一个我在这里找到的样本: http://datatables.net/forums/discussion/13488/adding-parameters-to-a-url-to-pre-filter

有人可以解释这个正则表达式的作用以及我如何修改它以接受空格?目前,当您输入空格时,浏览器会将其编码为%20。如何让浏览器将空格解释为空格并过滤正确的字符串?

示例:“http://example.com/list/?search=bobby%20flay”仍应在Datatables搜索字段中插入字符串“bobby flay”。它还将编码的字符串插入“bobby%20flay”,显然没有找到结果。有任何想法吗?感谢。

$.urlParam = function(name){
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (!results)
        {
            return;
        }
        return results[1] || "";
    };
    
$(document).ready(function(){
    $('#myTable').DataTable( {
        "oSearch": {"sSearch": $.urlParam('search')}
      
      ...
      
      });

2 个答案:

答案 0 :(得分:1)

要使用您目前拥有的内容,您可以使用以下内容替换这两个功能:

 $(document).ready(function(){ 
        var arr = window.location.href.split('='),
        search = arr[arr.length-1].replace(/%20/g, " "); 
        $('#myTable').DataTable( {
            "oSearch": {"sSearch": search}
          });
     });

1)等待文档加载

2a)使用window.location.href

获取网址

2b)使用split在' ='

的每个实例上创建一个数组

3a)获取数组的长度,并获取最后一个对象:arr.length-1

3b)使用正则表达式将%20的每个实例替换为" "

4)将新字符串传递给现有的表函数

答案 1 :(得分:0)

这样的事情应该有效: https://jsfiddle.net/pdo5k5ht/

 var urlString = "http://example.com/list/?search=bobby%20flay",
arr = urlString.split('='),
finalString = arr[arr.length-1].replace(/%20/g, " ");
alert(finalString );