在阵列中存储特定的JS Regex捕获组?

时间:2014-03-11 03:46:41

标签: javascript regex

有没有办法在不使用Pattern或Matcher的情况下指定我想要存储的组? 以下代码与“hello”匹配,我想匹配第二组中的“hi”。

var matches = [];
var test = "#hello# #hello#hi# #hello# #hi#";


test.replace(/#(hello)#(hi)#/gi, function (string, match) {
  matches.push(match);
});

alert(matches);

非常确定我需要$ 2或.group(1)。

编辑:功能(匹配,$ 1,$ 2)做到了。

2 个答案:

答案 0 :(得分:2)

您需要使用对第二个捕获组的引用将第二个捕获的组(hi)存储在matches数组中:

var matches = [];

var test = "#hello# #hello#hi# #hello# #hi#";


test.replace(/#(hello)#(hi)#/gi, function(match, $1, $2){
  matches.push($2);  // match = "#(hello)#(hi)#", $1 = hello, $2 = hi
});

alert(matches);  // ["hi"]

答案 1 :(得分:0)

删除g开关并使用String#match

"#hello# #hello#hi# #hello# #hi#".match(/#(hello)#(hi)#/i);
//=> ["#hello#hi#", "hello", "hi"]