javascript正则表达式中的look-behind断言出现语法错误

javascript正则表达式中的look-behind断言出现语法错误,javascript,regex,Javascript,Regex,我对这个错误一无所知,所以我希望这里的人能指出我的错误所在 此函数应使用新值替换querystring中的参数值: function ReplaceParameter(querystring, key, value) { var myregexp = new RegExp("(?<="+key+"=).+(?=&)", "i"); return querystring.replace(myregexp, value); } 调试此网站时,我通过visual stu

我对这个错误一无所知,所以我希望这里的人能指出我的错误所在

此函数应使用新值替换querystring中的参数值:

function ReplaceParameter(querystring, key, value) {
    var myregexp = new RegExp("(?<="+key+"=).+(?=&)", "i");
    return querystring.replace(myregexp, value);
}
调试此网站时,我通过visual studio收到了一个“Microsoft JScript运行时错误:正则表达式中的语法错误”错误

有什么想法吗


谢谢。

我认为JavaScript的正则表达式不支持look behind断言。因此请尝试以下方法:

function ReplaceParameter(querystring, key, value) {
    var myregexp = new RegExp("((?:^|&)"+encodeURIComponent(key)+")=[^&]*", "i");
    return querystring.replace(myregexp, "$1="+encodeURIComponent(value));
}

我认为JavaScript的正则表达式不支持look-behind断言。因此请尝试以下方法:

function ReplaceParameter(querystring, key, value) {
    var myregexp = new RegExp("((?:^|&)"+encodeURIComponent(key)+")=[^&]*", "i");
    return querystring.replace(myregexp, "$1="+encodeURIComponent(value));
}

哦,我明白了。Regexbuddy没有警告我…;-)谢谢你的回答,它很有效。回答好。你可能应该在将“值”放在查询字符串上之前对其进行url编码。哦,我明白了。Regexbuddy没有警告我…;-)谢谢你的回答,它很有效。回答好。你可能应该对“值”进行url编码“然后再将其放置在查询字符串上。