RegEx:在&符号之间匹配字符串

时间:2012-12-10 14:56:04

标签: javascript regex

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

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

最终结果应为

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

我正在唠叨我需要一个表达来找到& action =和以下&之间的所有内容。我尝试了不同的表达方式但没有成功,说实话,我在理解正则表达式语法方面遇到了很多困难。这里的问题是结肠,引号(%22)和括号我认为。如果它只是文本,我相信这样的东西会起作用:

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

有人可以帮忙吗?

由于

5 个答案:

答案 0 :(得分:4)

怎么'回合

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

Live Example | Source

答案 1 :(得分:2)

不要使用正则表达式,只需尝试:

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

答案 2 :(得分:0)

您可以使用positive and negative look-ahead。他们尊重(?<= expression )(?= expression )

以下内容将非贪婪地查找任何字符.*?,其前面是'action =',(?<=action=),后跟'&amp;',(?=&)

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

您可以测试此here

答案 3 :(得分:0)

您也可以使用

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

演示here

答案 4 :(得分: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];
  }
}

我希望这会有所帮助。