2009-07-14 1 views
1

이 오류가 발생하여 비어 있습니다.javascript 정규 표현식에서 look-behind 어설 션을 사용하여 구문 오류가 발생했습니다.

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); 

은 내가 "마이크로 소프트의 JScript 런타임 오류 얻을이 기능은 새 값으로 쿼리 문자열에서 매개 변수의 값을 교체해야

"오류."이 웹 사이트를 디버깅하는 동안 비주얼 스튜디오.

어떤 아이디어?

감사합니다.

답변

4

JavaScript의 정규 표현식은 룩어 드 어설 션을 지원하지 않는다고 생각합니다. 따라서 대신 다음을 시도하십시오.

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

아, 알았습니다. Regexbuddy가 그것에 대해 경고하지 않았다 ... ;-) 대답 해 주셔서 감사합니다. –

+0

참고하시기 바랍니다 나는 googled 및 lookaheads 자바 스크립트에서 작동합니다. –

+1

좋은 답변입니다. 쿼리 문자열에 배치하기 전에 "값"을 url-encode해야합니다. – Prestaul

관련 문제