Javascript正则表达式获得param值

时间:2015-06-01 22:04:19

标签: javascript regex params

我正在开发其他人构建的代码库,搜索功能使用它来从url获取参数作为搜索值。我已经尝试重新编写它,修改它,以及其他所有可能的东西,并且无法弄清楚函数中的reutrn值发生了什么。

这是函数

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    console.log(name);
    var regex = new RegExp("[\\?&#;]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    console.log(results);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

var part = getParameterByName('part_name');

location.search的值为?part_number=1234&go=GO

然后在输入框part_name中,如果我输入1234作为传入参数的值,它将只显示12.但是输入其他随机数时,它有时会正确地显示它们。如果我输入124作为搜索参数,则它会正确显示为对124进行搜索。

这些正则表达式中的一个是否有可能导致此问题,或者这是服务器端的问题? PHP在后端似乎很好,但我对Javascript代码中使用的正则表达式并不精明。

修改

测试代码段:

function getParameterByName(loc, name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    document.getElementById("res").innerHTML += "Name: " + name + "  - ";
    var regex = new RegExp("[\\?&#;]" + name + "=([^&#]*)"),
        results = regex.exec(loc);
    document.getElementById("res").innerHTML += results + "<br/>";
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

var part = getParameterByName('?part_number=1234&go=GO', 'part_number');
var part2 = getParameterByName('?part_name=12&go=GO', 'part_name');
<div id="res"/>

0 个答案:

没有答案