1

我正在尝试使用 regExp 来读取 URL 参数。我需要对以下字符串执行匹配:

SomeMoreText&action='{%22JsonParameter%22:[%221234%22]}'&SomeMoreText

最终结果应该是

                         '{%22JsonParameter%22:[%221234%22]}'

我想我需要一个表达式来查找 &action= 和以下 & 之间的所有内容。我尝试了不同的表达式但没有成功,老实说,我在理解正则表达式语法时遇到了很多困难。我认为这里的问题是冒号、引号 (%22) 和括号。如果只是文字,我相信这样的事情会起作用:

/action=([\w\-]+)/

任何人都可以帮忙吗?

谢谢

4

5 回答 5

4

怎么样

var m = /action=([^&]+)/.exec(str);
if (m) {
    // The content is in m[1]
}

实例| 来源

于 2012-12-10T14:58:51.647 回答
2

不要使用正则表达式,试试这个:

var n=str.split("&"); 
于 2012-12-10T14:59:35.297 回答
0

您可以使用正面和负面的前瞻。他们是(?<= expression )并且(?= expression )恭敬地。

.*?以下将对任何以 'action=',(?<=action=)开头并后跟 '&', 的字符进行非贪婪查找(?=&)

完整的正则表达式是:(?<=action=).*?(?=&)

你可以在这里测试一下。

于 2012-12-10T15:01:18.620 回答
0

你也可以使用

result = str.split("action=")[1];
result = result.substring( 0, result.indexOf("&") );

演示在这里

于 2012-12-10T15:05:35.840 回答
0

正如@PearsonArtPhoto 之前所说,您可以简单地使用 split :

var results=str.split("&"); 

然后遍历结果数组,如下所示:

for(i=0; i< results.length ; i++){
  if( results[i].split('=')[0] == 'action'){  // this condition to test that the key is 'action'
  return results[i].split('=')[1];
  }
}

我希望这有帮助。

于 2012-12-10T15:13:40.170 回答