Javascript:如何使用正则表达式从字符串中提取多个值?

时间:2014-01-14 14:01:47

标签: javascript regex facebook facebook-javascript-sdk

我的字符串就像https://www.facebook.com/connect/login_success.html?request=516359075128086&to%5B0%5D=100004408050639&to%5B1%5D=1516147434&_=_

此字符串是发送到fb。

的应用邀请网址重定向请求的结果

我想要做的是,将用户ID 100004408050639和1516147434提取到数组。

我尝试了var fbCode = testString.match(/to%5B0%5D=(.*)&/);,但这只返回其中一个数字,即第一次出现。

2 个答案:

答案 0 :(得分:0)

您的正则表达式指定%5B0%5D转换为[0]。第二个用户ID带有索引1([1]),编码为%5B1%5D。如果您想接受任何(数字)用户ID索引,请使用“/to%5B\d+%5D=(.*?)&/g”作为您的正则表达式,它允许任意数字(\d+)以及全局。

问候。

答案 1 :(得分:0)

var str = "https://www.facebook.com/connect/login_success.html?request=516359075128086&to%5B0%5D=100004408050639&to%5B1%5D=1516147434&_=_";

var re = new RegExp("to%5B[01]%5D=(\\d+)", "g");

global search使用g修饰符并希望获得()的匹配时,可以循环匹配。第一个带括号的组的那些将在[1]

var matches = [];

while(matches = re.exec(str)) {
  console.log(matches[1]);
}