在javascript正则表达式中使用look-behind断言的语法错误

时间:2009-07-14 12:51:39

标签: javascript regex

我对这个错误嗤之以鼻,所以我希望有人可以指出我哪里出错了。

此函数应使用新值替换查询字符串中的参数值:

function ReplaceParameter(querystring, key, value) {
    var myregexp = new RegExp("(?<="+key+"=).+(?=&)", "i");
    return querystring.replace(myregexp, value);
}

示例用法:

var serializedData = "columnsToDisplay=EmployeeId&columnsToDisplay=Name&columnsToDisplay=Birthday&columnsToDisplay=Phone&pageSize=4&columnToSort=EmployeeId&descending=False&page=1&partial=RainbowGridData";
var selectedPage = 17;
serializedData = ReplaceParameter(serializedData, "page", selectedPage);

我收到“Microsoft JScript运行时错误:正则表达式中的语法错误”错误。“在调试此网站时通过visual studio。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:4)

我认为JavaScript的正则表达式不支持后置断言。所以试试这个:

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