0

split()Javascriptメソッドで正規表現を使いたい

分割メソッドを実行するターゲット文字列は次のとおりです。

type=Search&searchType=simple&searchField=partOne && partTwo&highlight=partOne&isAllProductsContext=true&isAllProductInstance=false&contextId=&effectivity=

私のコード:

this.regexPattern = new RegExp("((?<=&&)&(?!&))|((?<!&)&(?!&))",'ig');
var keysAndValuesArray = targetString.split(regexPattern);
4

4 に答える 4

1

Javascript 正規表現エンジンは、正規表現のようにサポートしていませんlookbehind

Javascript で使用するには、正規表現を書き直す必要があります。問題を明確に定義していただければ、いくつかの代替案を提示できます。

更新OPの要件で機能するJavascriptコードは次のとおりです。

s = 'type=Search&searchType=simple&searchField=partOne && partTwo&highlight=partOne&isAllProductsContext=true&isAllProductInstance=false&contextId=&effectivity=';
m  = s.match(/[^&]+(?:&&[^&]*)?(?=&|$)/g);

**出力:

["type=Search", "searchType=simple", "searchField=partOne && partTwo", "highlight=partOne", "isAllProductsContext=true", "isAllProductInstance=false", "contextId=", "effectivity="]
于 2013-10-24T11:26:23.150 に答える
0

これを試すことができます:

var keysAndValuesArray = targetString.match(/(&\W+|[^&])+/g);
于 2013-10-25T17:03:52.160 に答える
0

分割されていませんが、一致は同様の作業を行います

var test = 'type=Search&searchType=simple&searchField=partOne && partTwo&highlight=partOne&isAllProductsContext=true&isAllProductInstance=false&contextId=&effectivity=';
var re = /(?:[a-zA-Z]+=(?:(?:[^&]+(?:&&)?)+)(?=&|$))/g;
alert( test.match(re) );
于 2013-10-24T12:19:48.330 に答える
0
targetString.replace(/([^&])&([^&])/g,"$1&&&$2")
            .split("&&&");

または &&& がうまくいかない場合に合わせてください

var match,results = [];
var patt=/(.*?[^&])&(?=[^&])/g;
while (match = patt.exec(str))
   results.push(+match[1]);
于 2013-10-24T11:39:09.543 に答える