0

我想在 Javascriptsplit()方法中使用正则表达式

运行拆分方法的目标字符串是:

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

你可以试试这个:

var keysAndValuesArray = targetString.match(/(&\W+|[^&])+/g);
于 2013-10-25T17:03:52.160 回答
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 回答