Javascript 如何使用regexjs获取附加到URL的多个数据

Javascript 如何使用regexjs获取附加到URL的多个数据,javascript,regex,Javascript,Regex,以下是网址: http://url?query=orderform&sid=000&layout=&clientName=Client%20Demo%20TestprojectName=xxxxx 从上面的URL中,我想获取clientName和projectName值,并在我的服务中使用它。我现在 在JavaScript中使用以下代码: testjs { var clientName= getParam("clientName"); var proje

以下是网址:

http://url?query=orderform&sid=000&layout=&clientName=Client%20Demo%20TestprojectName=xxxxx
从上面的URL中,我想获取clientName和projectName值,并在我的服务中使用它。我现在 在JavaScript中使用以下代码:

testjs
{
    var clientName= getParam("clientName");
    var projectName = getParam("projectName");
    function getParam(name)
    { 
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
        var regexS = "[\\?&]"+name+"=([^&#]*)"; 
        var regex = new RegExp( regexS ); 
        var results = regex.exec(window.location.href);
        if (results == null)
            return ""; 
        else 
            return results[1];
    }
}
上述代码的输出为:

projectName=ModifiedProject
clientName=Client%20Demo%20TestprojectName=xxxxx
我应该对getParam函数做什么更改,以便if将clientName作为

客户端%20Demo%20Test`而不是客户端%20Demo%20TestprojectName=xxxxxxx
要获取客户机名称,您需要使用不同的正则表达式和potive前瞻断言,如下所示

clientName=.*(?=projectName)
将匹配clientName=客户端%20Demo%20Test

例如:

试试这个。只用一个正则表达式就可以完成。请参阅演示

clientName=((?:(?!projectName).)*)|projectName=([^&#]*)
var re = /clientName=((?:(?!projectName).)*)|projectName=([^&#]*)/gm;
var str = 'http://url?query=orderform&sid=000&layout=&clientName=Client%20Demo%20TestprojectName=xxxxx';
var m;

while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}