2009-07-14 8 views
1

私はこのエラーで空白を見つけていますので、ここで誰かが間違っている箇所を指摘してくれることを願っています。正規表現の構文エラー:私は、「マイクロソフトのJScriptランタイムエラーを取得javascriptの正規表現でlook-behindアサーションの構文エラーがあります

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

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

使用例:

この関数は、新しい値でクエリ文字列内のパラメータの値を置き換える必要がありますこのウェブサイトのデバッグ中にビジュアルスタジオでエラーが発生しました。

何がいいですか?

ありがとうございます。

答えて

4

私は、JavaScriptの正規表現はルック・バック・アサーションをサポートしていないと思います。だから代わりにこれを試してください:

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

私は参照してください。 Regexbuddyはそれについて私に警告しなかった... ;-) 答えに感謝、それは動作します。 –

+0

FYI私はグーグルとlookaheadsはjavascriptで動作するはずです。 –

+1

良い答え。おそらくクエリ文字列に配置する前に "値"をURLエンコードする必要があります。 – Prestaul

関連する問題